二叉树已知后序序列和中序序列,或已知前序序列和中序序列,画出二叉树(简单易懂)

目录

题目1:某二叉树前序序列为ABDGHCEFI,中序序列为GDHBAECIF,请画出二叉树。

题目2:某二叉树中序序列为ABCDEFG,后序序列为BDCAFGE,请画出二叉树

跟着步骤一步一步来,很容易理解(当然请多加练习)。画出二叉树很重要,尤其是后面写代码时,很考验你对二叉树的理解。画树,可以增强你对二叉树构造与遍历的理解。

画树,本质就是递归的过程:从根节点开始往下,找到左右子树,分别在左右子树找到它们各自的根结点,从各自的根结点分别再继续往下,找到左右子树,分别在左右子树找到它们各自的根结点,再继续往下······

想看代码的朋友可以参考下这篇博客:

二叉树已知后序和中序求前序或层序;已知前序和中序,求后序或层序(C++详细代码)

题目1:某二叉树前序序列为ABDGHCEFI,中序序列为GDHBAECIF,请画出二叉树。


First,前序序列第一个字母即为二叉树顶点,依题意得顶点为A

Second,在中序序列找到A的位置,排在A左边的所有字母(GDHB)组成左子树,排在A右边的所有字母(ECIF)组成右子树。

注意!接下来是关键两步,这两步搞懂,后面依样画葫芦即可。

Third,看一下中序序列左子树部分(GDHB)在前序序列中的顺序,前序序列包含左子树部分的序列是(BDGH),由B排在第一个可知,B就是左子树的根结点;同理,看一下中序序列右子树部分(ECIF)在前序序列中的顺序,前序序列包含右子树部分的序列是(CEFI),由C排在第一个可知,C就是右子树的根结点。

Fourth,求出左右子树的根结点后,我们只看中序序列中序序列左子树部分(GDHB),因为GDH在根结点B左边,所以GDHB的左子树;同理中序序列右子树部分(ECIF),因为E在根结点C左边,所以E组成C的左子树;因为IF在根结点C的右边,所以IF组成C的右子树。

Fifth,重复第三步,看一下剩下的中序序列左子树部分(GDH)在前序序列中的顺序,前序序列包含左子树部分的序列此时是(DGH),可知D在第一个,所以D就是B的左子树的根结点;同理,看一下剩下的中序序列C的右子树部分(IF)在前序序列中的顺序,前序序列包含该左子树部分的序列此时是(FI),可知F在第一个,所以F就是C的右子树的根结点。

Sixth,重复第四步,我们只看中序序列,此时中序序列左子树剩下部分(GDH),因为GD左边,那G就是D的左子树;HD右边,那H就是D的右子树。此时中序序列右子树剩下部分(IF),因为IF左边,那I就是F的左子树。

Seventh,如果还有结点没画完的话,重复三、四步即可。

按照上述方法一步步来,整棵二叉树就画好啦!ヽ(*^ー^)人(^ー^*)ノ

已知后序序列和中序序列,画二叉树,步骤跟上面差不多。

题目2:某二叉树中序序列为ABCDEFG,后序序列为BDCAFGE,请画出二叉树。

First,后序序列最后一个字母即为二叉树顶点,依题意得顶点为E

Second,在中序序列找到E的位置,排在E左边的所有字母(ABCD)组成左子树,排在E右边的所有字母(FG)组成右子树。

接下来是关键步骤:

Third,看一下中序序列左子树部分(ABCD)在后序序列中的顺序,后序序列包含左子树部分的序列是(BDCA),由A排在最后一个可知,A就是左子树的根结点;同理,看一下中序序列右子树部分(FG),后序序列包含右子树部分的序列是(FG),由G排在最后一个可知,G就是右子树的根结点。

Fourth,求出左右子树的根结点后,我们只看中序序列中序序列左子树部分(ABCD),因为BCD在根结点A右边,所以BCDA的右子树;同理中序序列右子树部分(FG),因为F在根结点G左边,所以F组成G的左子树。

Fifth,重复第三步,看一下剩下的中序序列左子树部分(BCD)在后序序列中的顺序,后序序列包含左子树部分的序列此时是(BDC),可知C在最后一个,所以C就是A的右子树的根结点;这里右子树已经排完了,就不用再看了。

Sixth,重复第四步,我们只看中序序列,此时中序序列左子树剩下部分(BCD),因为BC左边,那B就是C左子树;DC右边,那D就是C右子树。

如有错误,还请指出。

码字不易,给个赞让更多人看到吧 (*^▽^*)~

  • 45
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值