Tree 我对二叉树直径问题的解给出了错误的结果
我正在做LeetCode问题: 给定二叉树的Tree 我对二叉树直径问题的解给出了错误的结果,tree,Tree,我正在做LeetCode问题: 给定二叉树的根,返回树的直径的长度 二叉树的直径是树中任意两个节点之间最长路径的长度。此路径可能通过也可能不通过根目录 两个节点之间路径的长度由它们之间的边数表示 我以为我解决了这个问题,但我的代码不适用于这个测试用例。你能告诉我我错过了什么吗 输入: 预期产出: 我的代码输出7 我的代码 类解决方案: def二叉树直径(自身,根:树状)->int: def dfs(节点:树节点,深度:int): 如果不是节点: 返回深度 深度+=1 left_depth=dfs
根
,返回树的直径的长度
二叉树的直径是树中任意两个节点之间最长路径的长度。此路径可能通过也可能不通过根目录
两个节点之间路径的长度由它们之间的边数表示
我以为我解决了这个问题,但我的代码不适用于这个测试用例。你能告诉我我错过了什么吗
输入:
预期产出:
我的代码输出7
我的代码
类解决方案:
def二叉树直径(自身,根:树状)->int:
def dfs(节点:树节点,深度:int):
如果不是节点:
返回深度
深度+=1
left_depth=dfs(node.left,depth)
右深度=dfs(node.right,depth)
返回最大值(左深、右深)
l=dfs(root.left,0)
r=dfs(根目录,右,0)
返回l+r
您的代码假定最长的路径始终通过根。然而,代码挑战已经包含了一个关于这一点的提示:
…此路径可能通过也可能不通过根目录
该图表示为:
[4,-7,-3,null,null,-9,-3,9,-7,-4,null,6,null,-6,-6,null,null,0,6,5,null,9,null,null,-1,-4,null,null,null,-2]
是:
现在可以看到-1和-2之间的路径有8条边,而通过根的最长路径只有7条边(-1到-7)
因此,您必须修改算法,以查看最长路径中的“最高”节点不是根的可能性。您的代码假定最长路径始终通过根。然而,代码挑战已经包含了一个关于这一点的提示: …此路径可能通过也可能不通过
根目录
该图表示为:
[4,-7,-3,null,null,-9,-3,9,-7,-4,null,6,null,-6,-6,null,null,0,6,5,null,9,null,null,-1,-4,null,null,null,-2]
是:
现在可以看到-1和-2之间的路径有8条边,而通过根的最长路径只有7条边(-1到-7)
因此,您必须修改算法,以查看最长路径中的“最高”节点不是根的可能性。对此答案有何反馈?对此答案有何反馈?
[4,-7,-3,null,null,-9,-3,9,-7,-4,null,6,null,-6,-6,null,null,0,6,5,null,9,null,null,-1,-4,null,null,null,-2]
____ 4 ___
/ \
-7 ____-3___
/ \
___-9___ -3
/ \ /
9 -7 -4
/ / \
__6__ -6 -6
/ \ / /
0 6 5 9
\ / /
-1 -4 -2