반응형
문제
Binary Tree Nodes | HackerRank
BST 테이블은 컬럼 N, P를 갖고 있습니다.
이진 트리 구조이며 N은 노드 값, P는 N의 부모 값입니다.
이진 트리의 노드 유형을 찾는 쿼리를 작성합니다. 노드 값 순으로 정렬해야 합니다.
각 노드의 유형은 아래와 같이 출력합니다.
- Root: 최상위 노드인 경우
- Leaf: 최하위 노드인 경우
- Inner: 루트 노드도 리프 노드도 아닌 경우
풀이
계층구조 쿼리의 START WITH 절에서는 루트(부모행)로 사용될 행을 지정합니다.
- Root 노드는 부모 값(P)이 NULL인 행입니다.
CONNECT BY PRIOR 절에 상위계층(부모행)과 하위계층(자식행)의 관계를 규정합니다.
- 자식컬럼(N) = 부모컬럼(P)로 지정하여 부모에서 자식으로(Top Down) 트리를 구성합니다.
LEVEL은 계층구조 쿼리에서 수행결과의 Depth를 표현하는 Pseudocolumn입니다.
- LEVEL 값이 1인 경우를 'Root'로 지정합니다.
CONNECT_BY_ISLEAF는 계층구조 쿼리에서 최하위 레벨(LEAF) 여부를 반환합니다.
- CONNECT_BY_ISLEAF 값이 1인 경우를 'Leaf'로 지정합니다.
- 그 외의 경우 'Inner'로 지정합니다.
SELECT N
, CASE WHEN LEVEL = 1 THEN 'Root'
WHEN CONNECT_BY_ISLEAF = 1 THEN 'Leaf'
ELSE 'Inner' END NODE
FROM BST
START WITH P IS NULL
CONNECT BY PRIOR N = P
ORDER BY 1
;
결과
1 Leaf
2 Inner
3 Leaf
4 Inner
5 Leaf
6 Inner
7 Leaf
8 Leaf
9 Inner
10 Leaf
11 Inner
12 Leaf
13 Inner
14 Leaf
15 Root
반응형
'SQL' 카테고리의 다른 글
[프로그래머스] SQL 고득점 Kit : JOIN 풀이 (Oracle) (0) | 2021.03.31 |
---|---|
[HackerRank] Print Prime Number 풀이 (Oracle) (0) | 2021.03.18 |
[HackerRank] Weather Observation Station 20 풀이 (Oracle) (0) | 2021.03.15 |
[HackerRank] Interviews 풀이 (Oracle) (0) | 2021.03.10 |
[HackerRank] Occupations 풀이 (Oracle) (0) | 2021.03.08 |
[HackerRank] 15 Days of Learning SQL 풀이 (Oracle) (0) | 2021.02.27 |
[HackerRank] Weather Observation Station 5 풀이 (Oracle) (0) | 2021.02.26 |
댓글