[HackerRank MySQL] Binary Tree Nodes

2021. 2. 22. 22:13Today I Learned.../MySQL

Binary Tree Nodes

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.

Sample Input

Sample Output

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

 

Explanation

The Binary Tree below illustrates the sample:


Solution

-- 1
select n, if(p is null, 'Root', 
             if(n in (select p from bst), 'Inner', 'Leaf'))
from bst
order by n
-- 2
select n, if(p is null, 'Root', 
             if(n not in (select p from bst where p is not null), 'Leaf', 'Inner'))
from bst
order by n

Reference: HackerRank Practice > SQL > Advanced Select > Binary Tree Nodes