해커랭크 [Binary Tree Nodes]

윤태영·2024년 8월 26일
0

문제

https://www.hackerrank.com/challenges/binary-search-tree-1/problem?isFullScreen=true

  1. N과 P의 두 열을 포함하는 BST라는 테이블이 주어집니다. 여기서 N은 이진 트리에 있는 노드의 값을 나타내고 P는 N의 부모입니다.
  2. 노드의 값으로 정렬된 이진 트리의 노드 유형을 찾으려면 쿼리를 작성합니다. 각 노드에 대해 다음 중 하나를 출력합니다:

INPUT FORMAT

TABLE NAME : BST

SAMPLE INPUT

SAMPLE OUTPUT

문제 풀이

이진 탐색 트리(Binary Search Tree, BST)의 각 노드에 대해 노드의 유형을 구분하는 문제를 해결합니다. 노드의 유형을 "Root" (루트 노드), "Inner" (내부 노드), 또는 "Leaf" (단말 노드)로 분류합니다.

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

1) CASE 문

CASE WHEN P IS NULL THEN 'Root':

  • 루트 노드: 부모 노드(P)가 NULL인 경우, 해당 노드는 트리의 루트 노드입니다. 루트 노드는 트리의 최상단에 위치하며 부모가 없습니다.
    WHEN N IN (SELECT P FROM BST) THEN 'Inner':

  • 내부 노드: 노드 N이 다른 노드들의 부모(P)로 존재하는 경우, 즉 N이 다른 노드들의 자식인 경우, 해당 노드는 내부 노드입니다. 내부 노드는 자식 노드가 있는 노드를 의미합니다.
    ELSE 'Leaf':

  • 리프 노드: 위의 두 조건에 해당하지 않는 경우, 즉 자식 노드가 없는 노드입니다. 이 경우는 리프 노드로 간주됩니다.

쿼리

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


profile
ice blue

0개의 댓글