当前位置: 首页 > 知识库问答 >
问题:

二叉树的最小深度-返回无

沈畅
2023-03-14

我正在处理LeetCode问题111。二叉树的最小深度:

给定一棵二叉树,求其最小深度。

最小深度是从根节点到最近的叶节点的最短路径上的节点数。

注意:叶是没有子节点的节点。

我使用了广度优先的算法,并试图改变它以使其与问题保持一致。但是函数返回的是

有人能解释为什么会这样吗?

def minDepth(self, root: Optional[TreeNode]) -> int:
        queue=[]
        if root==None:
            return 0
        level=1
        while(len(queue)>0):
            n=len(queue)
            for i in range(n):
                node=queue.pop(0)
                if not node.right and not node.left:
                    return(level)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            level+=1

共有1个答案

盖马鲁
2023-03-14

问题是您的队列在循环即将开始时是空的。

您应该将根节点放在其中:

        if root is None:
            return 0
        queue = [root]  # <----
        level = 1
        while queue:  
            # ...etc
 类似资料:
  • 我正在读二叉树。在练习编码问题时,我遇到了一些解决方案,其中要求找到二叉树的最小深度。现在根据我的理解,深度是从根到节点的边数(叶节点的情况下为叶节点/二叉树) 二叉树{1,2}的最小深度是多少 根据我的解决方案,应该是1。

  • 我在阅读下面的帖子后提出这个问题: 如何找到树的最小可能高度? 实际上,如果给二叉树的输入如下:100,50,70,60,我希望我的算法返回4。 但是下面的代码只返回1,因为它不区分叶[left==NULL] 没有人解释过如果我们希望输出为4而不是1,我们应该做什么。 有人能给我看看返回4而不是1的代码吗? 我认为我在上面选择了错误的样本值,人们对我真正想要的是什么感到困惑!!因此,将我的问题重新

  • 我们想写一个函数,它将二叉树的根作为输入,并使用类PairAns返回该树的最大值和最小值。 我在这个问题的基础案例中遇到了一些问题 我希望答案是正确的,但在所有测试用例中都出现了运行时错误。

  • NowCoder 题目描述 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路 // java public int TreeDepth(TreeNode root) { return root == null ? 0 : 1 + Math.max(TreeDepth(root.left), TreeDepth(root.right));

  • 我正在解决以下Leetcode问题:https://leetcode.com/problems/maximum-depth-of-binary-tree/solution/ 返回二叉树的最大深度。 这是我的解决方案: 由于某种原因,输出总是比预期的少一个。看看公认的解决方案,它们看起来和我的非常相似,但我似乎找不到我的解决方案出了什么问题。

  • 本文向大家介绍Python3实现二叉树的最大深度,包括了Python3实现二叉树的最大深度的使用技巧和注意事项,需要的朋友参考一下 问题提出: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 解决思路:递归法求解。从根结点向下遍历,每遍历到子节点depth+1。 代码实现( ̄▽ ̄): 时间和空间消耗: 以上就是本文的