如何求和二叉树的深度,为什么我的代码测试失败?- 不确定如何在我的 IDE 中设置二叉树,所以不能使用调试器
How to sum depths of a binary tree, why is my code failing tests?- not sure how to set up binary trees in my IDE so can't use debugger
我正在解决一个问题,要求我们对 Binary Tree
中的所有节点进行 return the sum of the Depths
。
例如:
通常我会使用debugger
来查找代码中的错误,但我不知道如何设置trees/binary tree in my IDE
。
我下面的代码通过了大部分测试,但未通过一些测试。它未通过上述测试,并生成 output of 20
而不是 16
.
def nodeDepths(root):
queue = [root]
sumOfDepths = 0
currentDepth = 0
while len(queue):
for _ in range(len(queue)):
currentNode = queue.pop()
sumOfDepths += currentDepth
if currentNode.left:
queue.append(currentNode.left)
if currentNode.right:
queue.append(currentNode.right)
currentDepth += 1
return sumOfDepths
代码 fails/is 执行意外操作的任何建议。
我认为您的错误根源在您的 current_node = queue.pop()
语句中。根据文档 “传递给方法的参数是可选的。如果没有传递,默认索引 -1 作为参数传递(最后一项的索引)。” 因为你是从队列中拉出最后一个条目一切正常,直到队列中有来自不同深度的条目。要解决此问题,请使用 current_node = queue.pop(0)
,这将始终从队列中提取最旧的条目。
我正在解决一个问题,要求我们对 Binary Tree
中的所有节点进行 return the sum of the Depths
。
例如:
通常我会使用debugger
来查找代码中的错误,但我不知道如何设置trees/binary tree in my IDE
。
我下面的代码通过了大部分测试,但未通过一些测试。它未通过上述测试,并生成 output of 20
而不是 16
.
def nodeDepths(root):
queue = [root]
sumOfDepths = 0
currentDepth = 0
while len(queue):
for _ in range(len(queue)):
currentNode = queue.pop()
sumOfDepths += currentDepth
if currentNode.left:
queue.append(currentNode.left)
if currentNode.right:
queue.append(currentNode.right)
currentDepth += 1
return sumOfDepths
代码 fails/is 执行意外操作的任何建议。
我认为您的错误根源在您的 current_node = queue.pop()
语句中。根据文档 “传递给方法的参数是可选的。如果没有传递,默认索引 -1 作为参数传递(最后一项的索引)。” 因为你是从队列中拉出最后一个条目一切正常,直到队列中有来自不同深度的条目。要解决此问题,请使用 current_node = queue.pop(0)
,这将始终从队列中提取最旧的条目。