Eu acho que algo assim deve fazer o truque:
SELECT * FROM
(SELECT n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n
LEFT JOIN RELATION r ON n.id = r.id_child
CONNECT BY PRIOR n.id = r.id_father
START WITH r.id_father IS NULL)
WHERE isleaf = 1
Ah, e a propósito, você pode obter todas as folhas sem usar a consulta hierárquica. Basta selecionar todos os nós, que não são o nó do pai para qualquer nó da tabela de relações. Algo parecido:
SELECT n.* FROM NODES n
WHERE NOT EXISTS (SELECT ID_FATHER FROM RELATION r
WHERE r.id_father = n.id)
Para obter os nós folha do nó especificado, basta alterar a condição na cláusula START WITH, para iniciar a árvore reversa do nó em que você está interessado. Por exemplo, esta consulta retornará todas as folhas filhas do nó com id =5 :
SELECT * FROM
(SELECT n.id, n.val, CONNECT_BY_ISLEAF isleaf FROM NODES n
LEFT JOIN RELATION r ON n.id = r.id_child
CONNECT BY PRIOR n.id = r.id_father
START WITH n.id = 5)
WHERE isleaf = 1