我有一个名为BST的表格,如下所示:
这里,N是二叉树节点的值,P是其父节点。我必须编写一个查询来确定一个节点是根节点、叶子节点还是内部节点。我编写了以下SQL查询:
然而,这并没有给我期望的结果,因为在
我现在有一个解决方法,使用以下查询可以给我期望的输出:
select N,
case
when P is null then 'Root'
when N in (select distinct P from BST) then 'Inner'
when N not in (select distinct P from BST) then 'Leaf'
end as type
from BST
然而,这并没有给我期望的结果,因为在
Case
语句中'Leaf'的最后一个条件不满足叶节点。在这种情况下,我得到了以下输出:![enter image description here](https://istack.dev59.com/sL6eO.webp)
select N,
case
when P is null then 'Root'
when N in (select distinct P from BST) then 'Inner'
else 'Leaf'
end as type
from BST
预期输出:
但是我无法弄清楚第一个有什么问题。能有人解释一下吗?