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

二叉树的高度-迭代

施赞
2023-03-14

这总是使只有一个out的循环:

def height(self):
    if self.root is None:
        return 0
    height = -1
    q = self.Queue()
    q.enqueue(self.root)
    while not q.is_empty():
        size = self.__len__()
        height += 1
        while size > 0:
            node = q.dequeue()
            if node.left is not None:
                q.enqueue(node.left)
            if node.right is not None:
                q.enqueue(node.right)
            size -= 1
    return height

为了返回二叉树的正确高度,您还有其他想法(或想法如何更改此代码)吗?

len是树中所有节点的数目,self。Queue是具有方法高度的类的子类。

共有1个答案

华振
2023-03-14

问题是在代码部分

size = self.__len__()
while size > 0:
    # [...]
    size -= 1

循环体的执行次数等于整个树中的节点数,这不是您想要的。

相反你想

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

  • 我需要关于计算二叉树高度的理论的帮助,通常是符号。 我看过以下文章: 计算二叉树的高度 其中一个帖子给出了以下符号: 高度(节点)=最大值(高度(节点L)、高度(节点R))1 假设我有以下二叉树: 因此,我是否计算左节点(8)和右节点(42)的最大值,然后加上1?我不太明白这种符号是如何计算树的高度的。

  • 我有下面的“height”函数,它返回树的高度。然而,当我尝试使用它时,我得到了这个异常。我怎样才能修好它?我还有一个函数“isBalancedTree”,它检查给定的树是否平衡。 *主要 ***异常:函数高度中的非穷尽模式

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

  • 一、题目 输入一棵二叉树的根结点,求该树的深度。从根结点到叶子点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二、解题思路 如果一棵树只有一个结点,它的深度为1。 如果根结点只有左子树而没有右子树, 那么树的深度应该是其左子树的深度加1,同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1. 如果既有右子树又有左子树, 那该树的深度就是其左、右子

  • 我正在读二叉树。在练习编码问题时,我遇到了一些解决方案,其中要求找到二叉树的最小深度。现在根据我的理解,深度是从根到节点的边数(叶节点的情况下为叶节点/二叉树) 二叉树{1,2}的最小深度是多少 根据我的解决方案,应该是1。