二叉树的遍历(前序 中序 后序)和已知两种遍历顺序求另外一种遍历顺序(含实例)

1 二叉树的遍历

          前序遍历:先遍历根节点,然后遍历左子树,然后遍历右子树

          中序遍历:先遍历左子树,然后遍历根节点,然后遍历右子树

          后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点

          举例如下:

          

          前序遍历:a b d e c f g   中序遍历:d b e a g f c  后序遍历:d e b g f c a

2 已知两种遍历序列求第三种遍历序列

          <1>已知前序和中序求后序遍历

            拿上图举例 根据前序序列:a b d e c f g   中序序列:d b e a g f c  由于前序序列先访问根节点,所以先序

序列的第一个就是二叉树的根节点,然后看中序序列中根节点a,他的左半部分(dbe)为他的左子树,(gfc)为他

的右子树。前序序列第二个访问b,中序序列可以判定出d为b的左子树,e为b的右子树。根据前序序列知道c为根节

点,根据中序得知c没右子树,只含左子树。同理最后可判定f为根节点,g为其左子树。至此可得出二叉树的图,

正如上图所示。即可写出后序序列:d e b g f c a

            希望我解释的还算清楚啊。。。

         <2>已知前序和后序求中序遍历

         这样是不能得到一个唯一的二叉树出来滴 举例如下:

         树A:有结点1,2,3,2是1的左孩子,3是2的右孩子

         树B:有结点1,2,3,2是1的右孩子,3是2的左孩子

         则A,B的前序都是123,后序都是321,但A的中序是231,B的中序是132

         <3>已知中序序列和后序序列求先序序列

         依旧拿上图举例,已知中序序列:d b e a g f c 后序序列:d e b g f c a。 由后序遍历序列定义得知最后一个

节点a必是树的根节点,由中序序列得知左子树(dbe),右子树(gfc),由后序序列倒数第二个为c,得知右子树根

节点为c,再由中序序列可判断出c只含左子树,由后序倒数第三个f判断出f为根节点,再由中序判断出f含左孩子

g。同理可依次判断左半部分(dbe)。至此可画出二叉树。

 

         同志们,我的讲解很详细啦。希望给大家带来方便。至于代码不发了。理解思想,自己去写代码吧。微笑

 

           

             

 

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值