I think you're looking for something like the query below. If I'm following you properly, you have to look for parents on the same event.
You generally want to provide sample data and schema information, by the way. It makes it easier for us to help, and possible for us to test the code we suggest.
WITH el AS
(
SELECT
e.eventid
, l.locationid
, l.locationnodeid
, l.locationnodeid.GetAncestor(1) parent
FROM
@EventLocations e
JOIN
@Locations l
ON
l.locationid = e.locationid
)
SELECT
ep.eventid
, p.*
FROM
el
JOIN
@EventLocations ep
ON
ep.eventid = el.eventid
AND
ep.locationid = el.locationid
JOIN
@Locations p
ON
p.locationid = ep.locationid
LEFT JOIN
el e2
ON
el.eventid = e2.eventid
AND e2.parent = el.locationnodeid
WHERE
e2.eventid IS NULL
EDIT:
A simpler version using NOT EXISTS rather than a LEFT JOIN to a CTE:
SELECT
ep.EventID
, p.*
FROM
@EventLocations ep
JOIN
@Locations p
ON
p.locationid = ep.locationid
WHERE
NOT EXISTS
(
SELECT
NULL
FROM
@EventLocations el2
JOIN
@Locations l2
ON l2.LocationID = el2.LocationID
WHERE
el2.EventID = ep.EventID
AND
l2.LocationNodeID.GetAncestor(1) = p.locationnodeid
);