如何弄清二叉树前序中序后序遍历的顺序

由于这三种遍历方法都是使用递归的方式进行访问每个节点的操作:

那么进入每个节点什么时候进行读取都是由他们的遍历方式的顺序决定的,举例中序遍历,他的顺序为PAS,Pred代表左孩子、Succ代表右孩子、A代表他自身。

中序遍历方法:

我搞清楚他们的访问顺序是模仿递归调用计算机会在需要进行递归调用时保存当前的状态,然后再转到递归里面继续执行,所以可以给每个节点都标上PAS顺序的三种标记,

每经过一个节点按照这个顺序写出此时调用到哪个部分了,当调用到P时就进入左孩子,此时将P标记划掉,表示这个递归已经开始执行了,然后左孩子生成自己的PAS顺序,当调用到A时,就对这个节点进行访问,S与P同理。

举例:有一个树结构如下,PAS是我认为的标记,操作为输出节点的编号


1.进入5号节点,P执行,进入左节点2,状态:5(PAS)

2.进入2号节点,P执行,进入左节点1,状态:2(PAS)

3.进入1号节点,P执行,此时没有左节点,继续执行A,输出编号1,执行S,此时没有右节点,结束递归调用,回到2号节点,状态:1(),此时结束调用返回上一层

4.进入2号节点,此时2的状态为AS,执行A,输出编号2,执行S,进入右节点3,状态:2(S)

5.进入3号节点,P执行,没有左孩子,执行A,输出编号3,状态:3(S)

6.进入4号节点,P执行,没有左孩子,执行A,输出编号4,执行S,没有右孩子,状态:4(),此时结束调用返回上一层递归



大致怎么推断遍历顺序就是这样,规则就是进入递归调用时不将标记划掉,当递归完成返回上一层时,将节点的标记划掉,表示递归已经完成,该执行个状态了,就能推断出他的遍历顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值