HackerRank SQL) Binary Tree Nodes
본문 바로가기
Data Base/Hacker Rank

HackerRank SQL) Binary Tree Nodes

by 조훈이 2022. 1. 15.

HackerRank SQL) Binary Tree Nodes


  문제 

Binary Tree Nodes | HackerRank

 

Binary Tree Nodes | HackerRank

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

www.hackerrank.com


  Code 

SELECT CUR.N, CASE
       WHEN CUR.P IS NULL THEN 'Root'
       WHEN CUR.N IN (SELECT DISTINCT NXT.P 
                      FROM BST AS NXT
                      WHERE NXT.P IS NOT NULL) THEN 'Inner'
       ELSE 'Leaf'
       END
FROM BST AS CUR
ORDER BY CUR.N ASC;

  설명 

Binary Tree

 

  SELECT 문에서 CASE ~ WHEN ~ END 구문을 사용하여 'Root', 'Inner', 'Leaf'를 나누었다.

 

  CASE 의 첫 번째 조건은 CUR.P 가 NULL 인지를 확인한다. CUR.P 가 NULL 이라면 Parent Node가 없는 것 이므로 `WHEN CUR.P IS NULL THEN 'Root'` 로 호출하였다.

 

  위 CASE 가 실행이 되지 않았다면 CUR.N 은 Root Node 가 아닌 상태이다. 따라서 'Inner' 인지 'Leaf'인지를 판별해야 한다.  현재 CUR.N 을 Parent Node 로 가지는 Node 가 있다면 CUR.N 은 'Inner' 이고, 없다면 'Leaf' 이다. 따라서 서브 쿼리로 어떠한 Node의 Parent Node 가 되는 Node들을 출력한 뒤 CUR.N 이 이 서브 쿼리에 포함이 되냐 안 되느냐에 따라 'Inner', 'Leaf' 로 나누었다.

728x90

댓글