Problem Solving

[LeetCode] Tree Node

luminous13 2022. 11. 8. 13:50

문제

Tree 테이블을 이용해서 Output 테이블처럼 루트 노트면 'Root', Inner 노드면 'Inner', 잎노드이면 'Leaf'을 값으로 갖는 테이블을 만들어야하는 문제. 처음엔 못풀었다가 솔루션을 보고 풀었다. id와 p_id 관계를 이용해서 문제를 풀 수 있다.

 

만약 루트 노드는 부모 노드가 없으므로 p_id가 null이면 루트 노드다. 그리고 id 값에 해당하는 p_id가 있으면 해당 노드는 Inner 노드다. 그 외에는 모두 Leaf 노드에 해당한다. 

풀이

1
2
3
4
5
6
7
8
SELECT id, 
CASE
    WHEN p_id is null then 'Root'
    WHEN id in (select p_id from tree) then 'Inner'
    else 'Leaf'
END AS 'type'
FROM tree
ORDER BY id;
cs