-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
Binary Tree 질문
20.11.17 18:08 작성 조회수 115
3
안녕하세요 아래와 같이 Binary Tree 문제를 풀었는데,
Leaf가 output 으로 나오지 않아서 혹시 이유를 알 수 있을지 문의 드립니다. ㅠ
/*
[목표]
- N, node type (Root, Leaf, Inner)
- order by value of node
[테이블]
- BST : N, P
[계획]
- 조건문을 통해서 Root, Leaf, Inner 파악
Root : 부모 가 Null
Inner : 부모와 자식이 둘다 있음
Leaf : 부모만 있음
-(case
when P is Null then 'Root'
N에는 존재하는데, P에는 없는 값 = Leaf
else 'Inner'
end) as type
*/
select
N,
(case when P is Null then 'Root'
when N not in (select P from BST) then 'Leaf'
else 'Inner'
end) as type_N
from BST
order by N asc
답변을 작성해보세요.
3
지식공유자 J
지식공유자2020.11.18
문제의 Sample Input을 예시로 설명 드리겠습니다.
작성하신 쿼리 중 when N not in (select P from BST) then 'Leaf' 부분에 의하면,
N!=2, N!=5, N!=8, N!=null 이 모두 True 값을 반환할 때 'Leaf'가 됩니다.
그런데 null과의 비교연산에서는 True도 False도 아닌 Unknown 값을 반환하게 됩니다.
위의 4가지 조건 중 True가 되지 못한 것이 있으므로 'Leaf' 값을 가지지 못하고,
CASE 문 안의 다음 조건인 else 'Inner'로 넘어가 'Inner' 값이 나오게 됩니다.
답변 1