HackerRank SQL: Binary Tree Nodes

Binary Tree Nodes:

문제 이해하기가 너무 어렵다…

You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.

1443818507-5095ab9853-1

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:

Sample Input

1443818467-30644673f6-2

1443773633-f9e6fd314e-simply_sql_bst

P가 Null일 경우 Root Node

N값이 P에 없을 때 Leaf Node

그 외의 경우는 Inner Node

Oracle

select N, /*subquery를 이용해서 노드 타입을 반환*/
( case when P is null then 'Root' /*P가 Null일때 Root*/ 
 when N not in (select distinct P from BST where P is not null) then 'Leaf' /*N이 P값에 없으면 Leaf*/ 
 else 'Inner' end /*그 외의 경우는 Inner */) as nType 
 from BST order by N;

언제 이런 문제를 참고하지 않을 수 있고 풀 수 있을지.. 앞으로 공부가 많이 필요해 보인다.