+-------------+------+
|Column Name |Type|+-------------+------+
| id | int || p_id | int |+-------------+------+
id is the columnofuniquevaluesfor this table.
Eachrowof this tablecontains information about the id of a node and the id of its parent node in a tree.
In leetcode 3054, table is specified as:
1
2
3
4
5
6
7
8
+-------------+------+
|Column Name |Type|+-------------+------+
| N | int || P | int |+-------------+------+
N is the columnofuniquevaluesfor this table.
Eachrow includes N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.
The given structure is always a valid tree.
Each node in the tree can be one of three types:
" Leaf": if the node is a leaf node.
" Root": if the node is the root of the tree.
" Inner": If the node is neither a leaf node nor a root node.
Write a solution to report the type of each node in the tree.
Input:
Tree table:+----+------+| id | p_id |+----+------+|1|null||2|1||3|1||4|2||5|2|+----+------+Output:
+----+-------+| id | type |+----+-------+|1| Root ||2| Inner ||3| Leaf ||4| Leaf ||5| Leaf |+----+-------+Explanation:
Node 1is the root node because its parent node isnull and it has child nodes 2 and 3.Node 2is an inner node because it has parent node 1 and child node 4 and 5.Nodes 3,4, and 5 are leaf nodes because they have parent nodes and they do not have child nodes.
Input:
Tree table:+----+------+| id | p_id |+----+------+|1|null|+----+------+Output:
+----+-------+| id | type |+----+-------+|1| Root |+----+-------+Explanation: If there is only one node on the tree, you only need to output its root attributes.
Leaf: The node whose id does not appear as any other node’s p_id (i.e., is not a parent of any node).
Inner: Any node that is neither root nor leaf (has a parent and is also a parent).
The query uses a CASE statement to assign the type for each node. The subquery (SELECT p_id FROM Tree WHERE p_id IS NOT NULL) collects all parent ids, so if a node’s id is not in this set, it is a leaf.