https://www.hackerrank.com/challenges/binary-search-tree-1/problem?isFullScreen=true
TABLE NAME : BST
이진 탐색 트리(Binary Search Tree, BST)의 각 노드에 대해 노드의 유형을 구분하는 문제를 해결합니다. 노드의 유형을 "Root" (루트 노드), "Inner" (내부 노드), 또는 "Leaf" (단말 노드)로 분류합니다.
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