[HackerRank] Binary Tree Nodes

당당·2023년 7월 14일
0

HackerRank

목록 보기
6/27

https://www.hackerrank.com/challenges/binary-search-tree-1/problem

📔문제

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.

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:

  • Root: If node is root node.
  • Leaf: If node is leaf node.
  • Inner: If node is neither root nor leaf node.

📝예시

1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf

The Binary Tree below illustrates the sample:


🧮분야

  • SELECT

📃SQL 코드

select n||' '||
    case when p is null then 'Root'
    when connect_by_isleaf=1 then 'Leaf'
    else 'Inner' end 
from bst
start with p is null
connect by prior n=p
order by n;

📰출력 결과


📂고찰

case when계층 쿼리를 사용했다.
확실히 프로그래머스 문제보다 난이도가 있는 것 같다.

p가 null인 것을 루트로 시작해서 순방향 전개를 했다.
만약 p가 null이면(5), Root를 뒤에 붙여주었다.

만약 리프이면, 즉 맨 하위 노드(connect_by_isleaf)면, 1이 출력되기 때문에 그렇다면 Leaf로 출력해주었다.

위에 두 가지 경우에 포함되지 않는다면 둘다 아닌 것으로 Inner를 출력해주었다.

profile
MySQL DBA 신입

0개의 댓글