查找二叉树的总深度时出错



我想测试二叉树的总深度,所以我写了以下代码:


def nodeDepths(root):
return depthSum(root, 0)

def depthSum(node, depth)
if node.left:
depth += depthSum(root.left, depth+1)
if node.right:
depth += depthSum(root.right, depth+1)
return depth

# This is the class of the input binary tree.
class BinaryTree:
def __init__(self, value):
self.value = value
self.left = None
self.right = None

然后我遇到了以下错误,请告诉我如何解决这个问题。

回溯(最近一次调用(: 文件 "main.py",第 7 行,在 导入json_wrapper 文件 "/tester/json_wrapper.py",第 3 行,在 导入程序 文件 "/tester/program.py",第 4 行 def depthSum(node, depth( ^ 语法错误:语法无效 退出状态 1

首先,:P读取错误。 您在第 4 行有一个语法错误,并且在 def 末尾缺少一个:

至于你的算法,不太确定为什么你有nodeDepths函数,它并没有真正的帮助。

对于您的depthSum函数,您的算法将永远不会完成,因为您陷入了无限递归循环 - 由于在 depthSum 函数中使用root而不是node,您从未实际遍历树。

看看这个,这是一个检查深度的简单方法:

def traverse(root, depth=0):
if root:
return max(traverse(root.left, depth+1), traverse(root.right, depth+1))

并直接调用它,用

traverse(root)

我没有看到nodeDepths函数的用例。

最新更新