如何求和二叉树的深度,为什么我的代码测试失败?- 不确定如何在我的 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),这将始终从队列中提取最旧的条目。