0
点赞
收藏
分享

微信扫一扫

LeetCode(数据库)- 树节点


题目链接:​​点击打开链接​​

题目大意:略。

解题思路:略。

AC 代码

-- 解决方案(1)
SELECT
id, 'Root' AS Type
FROM
tree
WHERE
p_id IS NULL

UNION

SELECT
id, 'Leaf' AS Type
FROM
tree
WHERE
id NOT IN (SELECT DISTINCT
p_id
FROM
tree
WHERE
p_id IS NOT NULL)
AND p_id IS NOT NULL

UNION

SELECT
id, 'Inner' AS Type
FROM
tree
WHERE
id IN (SELECT DISTINCT
p_id
FROM
tree
WHERE
p_id IS NOT NULL)
AND p_id IS NOT NULL
ORDER BY id;

-- 解决方案(2)
SELECT
id AS `Id`,
CASE
WHEN tree.id = (SELECT atree.id FROM tree atree WHERE atree.p_id IS NULL)
THEN 'Root'
WHEN tree.id IN (SELECT atree.p_id FROM tree atree)
THEN 'Inner'
ELSE 'Leaf'
END AS Type
FROM
tree
ORDER BY `Id`;

-- 解决方案(3)
SELECT
atree.id,
IF(ISNULL(atree.p_id),
'Root',
IF(atree.id IN (SELECT p_id FROM tree), 'Inner','Leaf')) Type
FROM
tree atree
ORDER BY atree.id;

-- 解决方案(4)
SELECT DISTINCT t1.id, IF(t1.p_id IS NULL, "Root", IF(t2.id IS NOT NULL, "Inner", "Leaf")) Type
FROM tree t1 LEFT JOIN tree t2 ON t1.id = t2.p_id;


举报

相关推荐

0 条评论