본문 바로가기
SQL

[SQL 코테 풀이] HackerRank - Binary Tree Nodes (DIFFICULTY : Medium, SKILL : Intermediate, MySQL)

by _땅콩 2024. 3. 22.

DIFFICULTY는 Medium으로 고정해두고, SKILL을 높여서 Intermediate 단계를 풀어보려고 한다.

실제로 문제에서는 Advanced 단계의 문제까지 나올 것으로 예상되서 부지런하게 감을 익혀야겠다.

 

그리고 인사담당자에게 물어봤을 때, 함수 사용 방법 등 간단한 구글링은 가능하다고 했다.

그치만 시간을 아낄 수 있다면 가장 좋으니!!

사용하면서 함수에 대한 정보를 미리 정리해서 프린트 해둘까 싶다.

 


 

문제

DIFFICULTY : Medium, SKILL : Intermediate, MySQL


You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.




Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node:

Root: If node is root node.
Leaf: If node is leaf node.
Inner: If node is neither root nor leaf node.

문제해석
1) 아래 조건을 적용해서 Node값을 판별해보자.
    - Root는 P값을 가지지 않을 것이다.
    -  Leaf는 child 값을 가지지 않기 때문에, P에는 없는 값일 것이다.
    -  Inner는 Root도 아니고, Leaf도 아닌 값이다.

 

INPUT 테이블

 

 

OUTPUT 결과 샘플

 

 

 


SQL CODE

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

 

 

 

SQL 결과

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

 

 

 


느낀점/개선점

추가 조사 1. Binary Tree Nodes
이진 트리 노드는 이진 트리의 기본 구성 요소이다. 이진 트리는 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조이다.

2. Node 개념
Root : 부모노드가 없는 경우
Leaf : 자식노드가 없는 경우
Inner : Root도 아니고, Leaf도 아닌 경우
느낀점 미리 문제 예습을 통해 이 개념을 접하게 되어서 다행이다.
알고 있는 명령문으로 해결이 가능한데, 제한된 시간 내에 이 문제를 처음 접하게 된다면 우왕좌왕 했을 것 같다.
개선점 -