본문 바로가기

코딩일기

SQL 코드카타 168 - Binary Tree Nodes

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

 

Column Type
N Integer
P Integer

 

BST 테이블:

  • N, P : 노드정보를 가진 두 열

여기서 N은 이진 트리의 노드 값을 나타내고, P는 N의 부모 노드를 나타냅니다.

각 노드의 노드 타입을 찾아 노드의 값으로 정렬하여 출력하는 쿼리를 작성하세요. 각 노드에 대해 다음 중 하나를 출력하세요:

  • Root: 노드가 루트 노드인 경우.
  • Leaf: 노드가 리프 노드인 경우.
  • Inner: 노드가 루트 노드도 리프 노드도 아닌 경우.
select
    N,
    case
        when P is null then 'Root'
        when N in (select P from BST) then 'Inner'
        else 'Leaf'
    end
from BST
order by N

 

P가 null이라면 부모노드가 없는 경우이므로 Root가 된다.

N이 어떤 노드의 부모노드 일 경우(N이 P에 속할경우) Root도 Leaf도 아니므로 Inner가 된다.

그외에는 Leaf가 된다.