본문 바로가기
언어 & 라이브러리/SQL

해커랭크 HackerRank Binary Tree Nodes Advanced Select

by illlilillil 2022. 1. 19.

문제 Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node:

  • Root: If node is root node.
  • Leaf: If node is leaf node.
  • Inner: If node is neither root nor leaf node.

EXAMPLE

Sample Output

1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf

문제 풀이

노드 상태에 따라 출력되는 값이 달라져야 하기 때문에 case문을 적용 시킨다.

order by로 N의 오름차순에 따라 값을 정렬하고 nodeType을 결정하는 것은 부모 노드가 null이면 Root이며 부모 노드 중에서 해당 N이 없으면 Leaf 노드가 된다. 둘 다 해당이 안된다면 Inner 노드로 취급한다.

select N, ( 
    case when P is null then 'Root' 
         when N not in (
             select distinct P 
             from BST 
             where P is not null) then 'Leaf'          
    else 'Inner' 
end)
as nodeType 
from BST 
order by N;

 

댓글