[hackerrank] Binary Tree Nodes

yenpkr·2025년 4월 23일
0

sql

목록 보기
85/91

문제

정답

select n,(case when p is null then 'Root'
          when n in (select p from bst) then 'Inner'
          else 'Leaf' end) a
from bst
order by n asc

p값이 null 인 경우 root
n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 있는 경우 Inner
나머지 Leaf (n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 없는 경우, p가 null 값이 아닌 경우)

또 다른 답

select n,(case when p is null then 'Root'
          when n not in (select p from bst where p is not null) then 'Leaf'
          else 'Inner' end) a
from bst
order by n asc

not in 은 null 값이 있을 경우 연산이 불가능하기 때문에,
select p from bst where p is not null
에서 null값을 제외시켜야 한다.

p값이 null 인 경우 root
n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 없는 경우 Leaf
나머지 Inner (n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 있는 경우, p가 null 값이 아닌 경우)

0개의 댓글