문제

"노드" || "노드의 부모"로 구성된 테이블에서

- Root: root node

- Leaf: leaf node

- inner: neither root node nor leaf node

구분하여 node 오름차순으로 정렬

 

Sample Output

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

 

풀이

1. P가 null이면 root node 이다.

CASE WHEN P IS NULL THEN 'Root'

2. N 중에 P에도 값이 있는 node는 누군가의 부모이므로 leaf node가 될 수 없다. root node도 아니기에 inner node이다.

CASE WHEN N IN (SELECT DISTINCT P FROM BST) THEN 'Inner'

3. 그 외에는 전부 leaf node이다.

CASE ELSE 'Leaf'

4. 종합하여 N과 함께 출력하고 N을 기준으로 오름차순으로 정렬한다.

SELECT
    N,
    (CASE
        WHEN P IS NULL THEN 'Root'
        WHEN N IN (SELECT DISTINCT P FROM BST) THEN 'Inner'
        ELSE 'Leaf'
    END) AS position
FROM BST
ORDER BY N

 

'SQL' 카테고리의 다른 글

[HackerRank] Weather Observation Station 18(MySQL)  (0) 2024.05.18
[HackerRank] New Companies(MySQL)  (0) 2024.05.11
[HackerRank] Occupations(MySQL)  (0) 2024.04.01
[HackerRank] The PADS(MySQL)  (0) 2024.03.20

+ Recent posts