[SQL ps] hackerrank Binary Tree Node

이찬행·2022년 4월 28일
0

SQL-문제풀이

목록 보기
3/7

문제

문제

문제 풀이

  1. JOIN 사용
  • column N과 column P에 나타난 횟수를 이용
  1. P에 한 번도 나타나지 않았다 > 자식 node가 없다 > leaf node
  2. P가 null이다 > root node
  3. 나머지 > inner node
WITH TEMP1 AS (SELECT BST.N, BST.P, TEMP.count
               FROM BST
               LEFT JOIN (SELECT P, COUNT(*) AS count
                          FROM BST
                          GROUP BY P) TEMP
               ON BST.N=TEMP.P
              )
              
SELECT N, IF(P IS NULL, 'Root', IF(count IS NULL, 'Leaf', 'Inner'))
FROM TEMP1
ORDER BY 1
;
  1. JOIN 미사용

    1. N이 parent에 없는 것은 'leaf'
    2. parent가 없는 것은 'root'
    3. parent에 있는 것은 'inner'
SELECT N, IF(P IS NULL, 
          'Root',
          IF(N IN (SELECT distinct P FROM BST),
             'Inner',
             'Leaf'
            )
         )
FROM BST
ORDER BY 1
;
profile
what's on your mind?

0개의 댓글