【教程】已知二叉树的后序序列和中序序列构造二叉树

原理:
二叉树的后序序列遍历过程是:左→右→根。中序序列遍历过程是:左→根→右。
已知后序序列可以唯一确定根结点,即:后序序列的最后一个结点就是根结点。确定完根结点之后,根据中序序列可以确定根结点的左子树和右子树,即:在中序序列中根结点的左边是左子树,根结点的右边是右子树。


例题:
已知某二叉树的后序序列为GDBEFCA,中序序列为DGBAECF,则构造该二叉树的过程如下图。


在这里插入图片描述


详细过程如下:
step1:后序序列为GDBEFCA,中序序列为DGBAECF
            可以得到:A是该二叉树根结点,DGB是A结点的左子树,ECF是A结点的右子树。
            如图:
在这里插入图片描述
step2:先看左子树:DGB,分析它。
            从二叉树的后序序列 GDBEFCA 中找到DGB按照二叉树的后序序列中的顺序写出来,即:GDB
            它就是左子树DGB的后序序列。再从二叉树的中序序列 DGBAECF 中找到DGB按照二叉树的中
            序序列中的顺序写出来,即:DGB它就是左子树DGB的中序序列。
            于是有,左子树DGB的后序序列为:GDB,中序序列为:DGB
            可以得到:B是根结点,DG是B结点的左子树
            如图:
在这里插入图片描述
step3:再看左子树:DG,分析它。
            从二叉树的后序序列 GDBEFCA 中找到DG按照二叉树的后序序列中的顺序写出来,即:GD它就
            是左子树DG的后序序列。再从二叉树的中序序列 DGBAECF 中找到DG按照二叉树的中序序列中
            的顺序写出来,即:DG它就是左子树DG的中序序列。
            于是有,左子树DG的后序序列为:GD,中序序列为:DG
            可以得到:D是根结点,G是B结点的右子树。
            如图:
在这里插入图片描述
至此A结点的左子树分析完毕,接下来是右子树。


step1:从二叉树的后序序列 GDBEFCA 中找到ECF按照二叉树的后序序列中的顺序写出来,即:EFC它
            就是右子树ECF的后序序列。再从二叉树的中序序列 DGBAECF 中找到ECF按照二叉树的中序序
            列中的顺序写出来,即:ECF它就是右子树ECF的中序序列。
            于是有,右子树ECF的后序序列为:EFC,中序序列为:ECF
            可以得到:C是根结点,E是C结点的左子树,F是C结点的右子树
            如图:
在这里插入图片描述
以上就是根据二叉树的先序序列和中序序列成功构造出的二叉树。

相关练习请转到:【例题】

  • 32
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 已知二叉树后序遍历序列为:DEBFCA,中序遍历序列为:DBEACF。 根据二叉树后序遍历序列,可以知道最后一个元素是根节点,即C。然后在中序遍历序列中找到根节点C的位置,可以将中序遍历序列分为左右两个子树的序列:左子树序列为DBEA,右子树序列为F。接着,根据左右子树序列的长度,可以将后序遍历序列也分为左右两个子树的序列:左子树序列为DEBF,右子树序列为A。这样,就可以递归地构造出整个二叉树构造出的二叉树如下所示: ``` C / \ / \ / \ / \ DBEA F ``` 它的先序遍历序列为:CBDEAF。 ### 回答2: 已知二叉树后序中序序列如下: 后序序列:DGFEBHCA 中序序列:GFDBHEAC 根据二叉树的性质,后序序列的最后一个元素即为二叉树的根节点,即C。并将中序序列按照根节点分割成两部分,左边部分为左子树的中序序列,右边部分为右子树的中序序列。 根据中序序列的性质,根节点前的元素是左子树的中序序列,根节点后的元素是右子树的中序序列。同时,我们可以根据中序序列的长度,确定后序序列中左子树的后序序列和右子树的后序序列。 根据以上分析,可以得到如下的左子树和右子树的序列: 左子树的中序序列:GFDBHE 左子树的后序序列:GFEDHB 右子树的中序序列:A 右子树的后序序列:C 对于左子树,继续使用同样的方法递归构建左子树的结构。左子树的根节点为左子树的后序序列的最后一个元素,即B。左子树的中序序列为GFDBHE,左子树的后序序列为GFEDHB。 对于右子树,由于右子树只包含一个元素,即A,无需再进行递归构建。 综上所述,根据给定的后序序列中序序列,可以构造出如下的二叉树: C / \ B A 根据构造二叉树,可以得到其先序遍历序列为:CBAGFEDH ### 回答3: 已知二叉树后序序列为:DEFBCGA,中序序列为:DBEFAGC。 根据二叉树后序遍历特点,最后一个元素为根节点,即A为根节点。然后根据中序序列,可以将整棵树分为左子树和右子树两部分。在中序序列中,A的左侧为左子树的中序序列(DBE),右侧为右子树的中序序列(CG)。根据左子树的中序序列,可以得出左子树的后序序列(DEF)。同理,根据右子树的中序序列,可以得出右子树的后序序列(BG)。然后分别对左子树和右子树进行递归构造。 左子树的后序序列为DEF,中序序列为DBE。根据左子树的后序遍历特点,最后一个元素为根节点,即F为左子树的根节点。然后根据中序序列,可以将左子树分为左子树的左子树和右子树两部分。在中序序列中,F的左侧为左子树的左子树的中序序列(D),右侧为右子树的中序序列(BE)。根据左子树的左子树的中序序列,可以得出左子树的左子树的后序序列(D)。同理,根据右子树的中序序列,可以得出右子树的后序序列(E)。对左子树的左子树和右子树进行递归构造。 右子树的后序序列为BG,中序序列为CG。根据右子树的后序遍历特点,最后一个元素为根节点,即G为右子树的根节点。根据中序序列,可以将右子树分为左子树和右子树两部分。在中序序列中,G的左侧为左子树的中序序列(C),右侧为空。根据左子树的中序序列,可以得出左子树的后序序列(C)。对左子树进行递归构造。 通过以上的构造过程,可以得到完整的二叉树。根据先序遍历的特点,根节点先于左子树和右子树被遍历,得出先序遍历序列为:ABDECFG。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志Java工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值