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이 오름차순이 되도록 정렬한다