二叉树常见问题

1 三种方式遍历二叉树

前后中,最简单的使用递归,对于非递归方式:

1) 前序:借助栈,进栈时打印元素。对于每个点,首先向左走到尽头,并将元素进栈输出,之后对栈做循环,当不为空时,弹出栈顶,如果节点有右孩子,则进栈输出,并将root变成右孩子,跳出该栈的循环,对新的root进行判断,当栈为空时跳出大循环。

2 )中序:借助栈,出栈时打印元素。对于每个点,也是向左走走到尽头,进栈,然后对栈做循环,当栈不空时,弹出栈顶,并输出,如果有右孩子,则进栈,并root变成右孩子,跳出栈的循环,对新的root进行判断,当栈为空时跳出大循环。

所以中序和前序,思想完全一样,只是前序是在进栈时输出,中序是在出栈时输出。

3 )后序:目前还有点问题。。

2 层次遍历二叉树

使用队列,首先将根节点入队,之后循环判断队列是否为空,不为空,则出对列输出,出对列后判断该店是否有两个孩子,有则进队,

循环直到队列为空。发现这个简单....


    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值