gpt4 book ai didi

sql - T-SQL 计算二叉树中的子节点?

转载 作者:行者123 更新时间:2023-12-04 18:13:05 26 4
gpt4 key购买 nike

我做了一个表来存储一个二叉树,如下所示:

- NodeID
- NodeLeft
- NodeRight

NodeLeft 存储左节点的 ID。而Node right存储了正确节点的ID。

我需要编写一个程序,如果我传递一个 NodeID,它将计算左侧有多少个子节点,右侧有多少个子节点。可以分离到2个程序。

最佳答案

尝试这个:

WITH CTE_Node(
NodeID,
NodeRigth,
NodeLeft,
Level,
RigthOrLeft
)
AS
(
SELECT
NodeID,
NodeRigth,
NodeLeft,
0 AS Level,
'P'
FROM Node
WHERE NodeID = 1

UNION ALL

SELECT
Node.NodeID,
Node.NodeRigth,
Node.NodeLeft,
Level + 1,
CASE WHEN CTE_Node.NodeLeft = Node.NodeID THEN 'R' ELSE 'L' END
FROM Node
INNER JOIN CTE_Node ON CTE_Node.NodeLeft = Node.NodeID
OR CTE_Node.NodeRigth = Node.NodeID
)
SELECT DISTINCT RigthOrLeft,
COUNT(NodeID) OVER(PARTITION BY RigthOrLeft)
FROM CTE_Node

这是 SQL Fiddle .
关卡只是在那里看看它是如何工作的。愿你以后可以使用它。

关于sql - T-SQL 计算二叉树中的子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com