SQL

(HackerRank) 해커랭크 SQL [Binary Tree Nodes] Oracle 풀이

5사 2021. 12. 7. 16:23

문제 링크

https://www.hackerrank.com/challenges/binary-search-tree-1/problem?isFullScreen=true 

 

Binary Tree Nodes | HackerRank

Write a query to find the node type of BST ordered by the value of the node.

www.hackerrank.com

두 개의 열이 포함된 테이블 BST가 주어집니다.
여기서 N은 이진트리에서 노드의 값을 나타내고 P는 N의 부모입니다.

노드 값으로 정렬된 이진트리의 노드 유형을 찾기 위한 쿼리를 작성합니다.
각 노드에 대해 다음 중 하나를 출력합니다.

Root: 노드가 루트 노드인 경우.
Leaf: 노드가 리프 노드인 경우.
Inner: 노드가 루트 노드와 리프 노드가 아닌 경우.

 

SELECT절 서브 쿼리를 사용한 풀이

 

 

case when p is null then 'Root'
               when n in ((select p from bst)) then 'Inner'
               else 'Leaf' end

-- p값이 null인 것은 가장 최상위의 서열이라는 것이다 그러므로 Root가 출력되게 한다

-- n이 p에 있는 값과 같은 것을 찾으면 중간 서열(최상위, 최하위 서열이 아닌 것)에 위치한다는 것이므로 다른 노드와 위아래로 연결되어 있는 상태라는 의미이다 그러므로 Inner가 나오게 한다

-- 나머지는 최하위 서열인 자기 밑에 서열이 없는 상태이므로 Leaf가 나오게 한다

 

order by n

-- n이 오름차순이 되도록 정렬한다