如何在不使用递归和级别顺序遍历的情况下找到二叉树的高度?

杜比

我想出了遍历遍历的方法来找到树的高度。

void preHeight(node * n)
{
    int max = 0,c = 0;
    while(1)
    {
        while(n)
        {
            push(n);
            c++;
            if(c>max)
                max = c;
            n= n->left;
        }
        if (isStackEmpty())
            return max;
        n = pop();
        if(n->right)  //Problem point
            c--;
        n=n->right;
    }
}

我得到的高度正确,但是我不确定我的方法是否正确。我要做的是将计数器c增加到最左边的节点,然后,如果我向上移动,我会减小它,以防万一我需要向右移动,然后重复整个练习。那是对的吗?

里尔

考虑下面的树-

    o
   / \
  o   o
 /     \
o       o 

您将以c == 2到达最左边分支的末尾,然后向上弹出节点,但仅对c带有右子节点的节点递减,而实际上您应该在每次弹出时递减它,因为这意味着您已上一级起来,不管其他孩子。在这种情况下,您将到达顶部节点,递减一次,然后以c == 1从根开始下降,最终达到3。

如果您删除该条件,它将正常工作。或者,您可以保留c每个级别的值,而不用递减的方式恢复它-您可以将其与节点指针一起推入单独的堆栈中,也可以使用c(和当前节点)将代码转换为递归作为局部变量(基本上是同一回事,只是编译器会为您维护堆栈)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从级别顺序遍历创建二叉树?

来自分类Dev

在没有递归的情况下找到二叉树的最大深度

来自分类Dev

如何使用递归遍历此二叉树?

来自分类Dev

如何使用级别顺序遍历序列构造二叉树

来自分类Dev

在不使用if条件的情况下对二叉树中的叶子进行计数

来自分类Dev

递归二叉树的高度

来自分类Dev

递归和遍历二叉树

来自分类Dev

如何仅从级别顺序遍历字符串构造二叉树

来自分类Dev

如何仅从级别顺序遍历字符串构造二叉树

来自分类Dev

最坏的情况下Quicksort二叉树

来自分类Dev

getHeight如何递归确定二叉树的高度?

来自分类Dev

使用递归解释遍历二叉树(python)

来自分类Dev

在给定有序和预序遍历的情况下,如何导出该公式的证明以使二叉树成为正确的子代?

来自分类Dev

使用递归在二叉树中找到鞍点

来自分类Dev

从级别顺序和顺序树遍历构建二叉树

来自分类Dev

在不更改树的高度的情况下,在二叉树中添加其他元素

来自分类Dev

如何使用自下而上的递归在二叉树中找到最低的共同祖先

来自分类Dev

二叉树。叶节点的顺序(遍历树)

来自分类Dev

之字形方式遍历二叉树的打印级别顺序

来自分类Dev

在二叉树的级别顺序遍历中获取运行时错误

来自分类Dev

在python中按级别顺序遍历二叉树

来自分类Dev

二叉树的递归级顺序遍历的时间复杂度是多少

来自分类Dev

递归代码,用于二叉树的最大高度

来自分类Dev

Python中的二叉树级顺序遍历

来自分类Dev

二叉树级顺序遍历-反向

来自分类Dev

遍历非二叉树的最坏情况

来自分类Dev

在没有额外类的情况下在二叉树中找到最深的节点?

来自分类Dev

如何从有序遍历和预遍历遍历生成二叉树

来自分类Dev

如何在不达到Python的最大迭代次数的情况下,将字符串数组添加到二叉树中?

Related 相关文章

  1. 1

    如何从级别顺序遍历创建二叉树?

  2. 2

    在没有递归的情况下找到二叉树的最大深度

  3. 3

    如何使用递归遍历此二叉树?

  4. 4

    如何使用级别顺序遍历序列构造二叉树

  5. 5

    在不使用if条件的情况下对二叉树中的叶子进行计数

  6. 6

    递归二叉树的高度

  7. 7

    递归和遍历二叉树

  8. 8

    如何仅从级别顺序遍历字符串构造二叉树

  9. 9

    如何仅从级别顺序遍历字符串构造二叉树

  10. 10

    最坏的情况下Quicksort二叉树

  11. 11

    getHeight如何递归确定二叉树的高度?

  12. 12

    使用递归解释遍历二叉树(python)

  13. 13

    在给定有序和预序遍历的情况下,如何导出该公式的证明以使二叉树成为正确的子代?

  14. 14

    使用递归在二叉树中找到鞍点

  15. 15

    从级别顺序和顺序树遍历构建二叉树

  16. 16

    在不更改树的高度的情况下,在二叉树中添加其他元素

  17. 17

    如何使用自下而上的递归在二叉树中找到最低的共同祖先

  18. 18

    二叉树。叶节点的顺序(遍历树)

  19. 19

    之字形方式遍历二叉树的打印级别顺序

  20. 20

    在二叉树的级别顺序遍历中获取运行时错误

  21. 21

    在python中按级别顺序遍历二叉树

  22. 22

    二叉树的递归级顺序遍历的时间复杂度是多少

  23. 23

    递归代码,用于二叉树的最大高度

  24. 24

    Python中的二叉树级顺序遍历

  25. 25

    二叉树级顺序遍历-反向

  26. 26

    遍历非二叉树的最坏情况

  27. 27

    在没有额外类的情况下在二叉树中找到最深的节点?

  28. 28

    如何从有序遍历和预遍历遍历生成二叉树

  29. 29

    如何在不达到Python的最大迭代次数的情况下,将字符串数组添加到二叉树中?

热门标签

归档