Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算二叉树的最小深度_Python_Algorithm_Tree - Fatal编程技术网

Python 如何计算二叉树的最小深度

Python 如何计算二叉树的最小深度,python,algorithm,tree,Python,Algorithm,Tree,下面是leetcode中的问题: 给定一棵二叉树,求其最小深度。 最小深度是从根节点到最近叶节点的最短路径上的节点数。 如果我理解正确,这意味着如果我有一棵树 8 / \ 3 10

下面是leetcode中的问题: 给定一棵二叉树,求其最小深度。 最小深度是从根节点到最近叶节点的最短路径上的节点数。 如果我理解正确,这意味着如果我有一棵树

                                                8
                                               / \
                                              3   10
                                             /
                                            1
最小深度应为2(从节点8到节点10)。 但是,从python代码的以下两个链接:
我编译的结果是3!!!这让我非常困惑….

深度优先或深度优先搜索都可以找到离根最近的叶子。BFS可以比在整个树上搜索任意快(对于DFS是必要的),尽管它通常会使用更多内存

下面是两个实现的完整示例,两个实现都返回树的最小深度,以及位于该最小深度的叶节点。深度优先比广度优先更容易实现,因为使用递归表示深度优先算法很容易

import collections
import heapq

Node = collections.namedtuple('Node', ['v', 'children'])

def min_depth_bfs(root):
    todo = [(1, root)]
    while todo:
        depth, node = heapq.heappop(todo)
        if not node.children: return depth, node
        for c in node.children:
            heapq.heappush(todo, (depth + 1, c))

def min_depth_dfs(node):
    if not node.children: return 1, node
    d, n = min(min_depth_dfs(c) for c in node.children)
    return 1 + d, n

example = Node(8, [Node(3, [Node(1, [])]), Node(10, [])])

print min_depth_dfs(example)
print min_depth_bfs(example)

嗯..我不知道为什么这个图没有显示..我的意思是:根是8,它的左子是3,右子是10。3的左子是1..谢谢代码可能解释了一个只有根的树的深度是1?所有路径的返回值是否都比您预期的多1?我查看了这两段代码,它们似乎都返回了2(正如预期的那样)。诚然,我不是Python解释器,我懒得去运行代码,所以我不能肯定,但是……看起来你对这些解决方案返回的结果是错误的。你的问题到底是什么?