【发布时间】:2020-10-20 19:19:11
【问题描述】:
我正在尝试链接 here 的 HackerRank 问题。
我很好奇为什么我尝试的解决方案没有为二叉树的叶子返回任何行。这是我的完整查询:
SELECT N, 'Root'
FROM BST
WHERE ISNULL(P)
UNION
SELECT N, 'Inner'
FROM BST
WHERE N IN (SELECT P FROM BST) AND NOT ISNULL(P)
UNION
SELECT N, 'Leaf'
FROM BST
WHERE N NOT IN (SELECT P FROM BST)
ORDER BY N
在我看来,我识别叶子的方法是正确的——叶子被定义为不是父节点的节点。但是,当我自己尝试 SELECT N, 'Leaf' ... 查询时,我没有得到任何输出。
谁能发现我的错误?我是否正确使用了NOT IN 语句?
edit:只是为了澄清一下,N是节点的值,对应的P是它的父节点。 N 和 P 都是整数。
【问题讨论】:
-
not in(...)如果括号内可以遇到 NULL,则始终是个问题 -
@Strawberry 知道了,我会努力做到的。 fiddle 等是否比 SQL hackerrank 提交界面更受欢迎?
-
“基本上”是轻描淡写的。
标签: mysql sql subquery case hierarchical-data