반응형
문제
Binary Tree Nodes | HackerRank
Binary Tree Nodes | HackerRank
Write a query to find the node type of BST ordered by the value of the node.
www.hackerrank.com
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 |
댓글