二叉树的前序中序后序遍历(1)

参考Macho0723的博客,网址:https://blog.csdn.net/qq_34154570/article/details/82700094

 

二叉树有前序遍历、中序遍历和后序遍历。

 

一、前序遍历:(根-->左-->右)

循环{

    1访问根节点

    2 访问左子树

    3 访问右子树

}

二、中序遍历

循环{

     1 访问左子树

    2 访问根节点

    3 访问右子树

}

 

三、后序遍历

循环{

   1 访问左子树

   2 访问右子树

   3 访问根节点

}

实例:

    前序遍历:ABCDEFGHK

    中序遍历:BDCAEHGKF

    后序遍历:DCBHKGFEA

 

对于中序遍历:

根节点A,先左子树B,查询B,无左子树,之后根B,   输出:  B

之后B右子树C,查C左子树D,在查D,D无,则输出为:D    ,即B->D

D后为C                                                                                        即B->D->C

C无右子树,此时该A,                                                                 B->D->C->A

A的右子树为E,E无左子树,此时为E                                  B->D->C->A->E

E有右子树F,此时F作为跟节点,有左子树G,G有H,则为H,B->D->C->A->E->H

H无回溯 为G                         B->D->C->A->E->H->G

G 有右子树K,                          B->D->C->A->E->H->G->K

剩下F                                     B->D->C->A->E->H->G->K->F

即BDCAEHGKF

 

四、已知前序和中序,求后序遍历

已知

前序遍历: ABGDECFH

中序遍历: GBEDAFCH

构建二叉树步骤:

      1 根据前序遍历的特点,我们知道根结点root为A

       2 观察中序遍历GBEDAFCH。其中root节点A的左侧GBED必然是root的左子树,右侧FCH必然是root的右子树。同时,这个也分别是左子树和右子树的中序遍历的序列;

  3  在前序遍历遍历完根节点后,接着执行前序遍历左子树,注意,是前序遍历,什么意思?就是把左子树当成一棵独立的树,执行前序遍历,同样先访问左子树的根,第2步我们已经知道左子树是BGDE(前序遍历序列)了,由此可以得到,左子树的根是B,那么在这一步得到左子树的根是B

4 从第2步得到的中序遍历的节点序列中,找到B,发现B左边只有一个G,说明B的左子树只有一个叶子节点,B的右边呢?我们可以得到B的右子树有ED,再看前序遍历的序列,发现D在前,也就是说,D是先前序遍历访问的,则得到E是D的左子树,只有一个叶子节点。到这里,我们可以得到这棵树的根结点和左子树的结构了,
5  接着看右子树,在第2步的时候已经知道右子树是FCH这三个节点,那么先看前序遍历的序列,先出现的是C那么C就是右子树的根结点,看右子树的中序遍历为FCH所以FH就分别是它的左子树和右子树,因此,右子树的结构就出来了,

6 把左子树和右子树连接起来

7 最后由二叉树的结构可以得到后序遍历序列为:GEDBFHCA

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值