已知两种遍历序列求原始二叉树

已知两种遍历序列求原始二叉树

需要明确的前提条件

  • 通过先序和中序可以求出原始二叉树
  • 通过中序和后序可以求出原始二叉树
  • 但是通过先序和后序无法还原出二叉树

换种说法:

  • 只有通过先序中序或者后序中序才可以确定一个二叉树

先来看一个例子,已知先序遍历序列和中序遍历序列求后序遍历:
先序:ABCDEFGH
中序:BDCEAFHG
求后序:
分析:要求后序遍历序列,必须求出原始二叉树
先看先序序列A第一个出现,有先序遍历的定义可以知道A是根结点
再看中序遍历,A的左边是BDCE,而A的右边是FHG
求原始二叉树1
BDCE哪个是根呢?答案还是从先序遍历找,因为先序遍历根最先出现
再看B、D、C、E中在先序遍历中最先出现的是B,所以B是BDCE中的根,
由于B是根,在看中序遍历中B左端没有树,所以DCE是B的右子树
求原始二叉树2
而在DCE中,谁又是根?
同样的我们看先序遍历序列C先出现,所以C是DCE中的根,
而此时在中序遍历中C的左端只有一个D,C的右端只有一个E
根据中序遍历的定义D是C的左子树,E是C的右子树
求原始二叉树3
接着我们再看FHG,F、H、G在先序遍历中最先出现的是F,所以F是FHG中的根,
再回到中序遍历FHG中F左端再没有结点,右端是HG所以HG是F的右子树
求原始二叉树4
再看HG中谁是根,在先序遍历中G先出现,所以G是根
再看中序遍历,G的左端只有一个H,右端没有子树,说明H是G的左子树
求原始二叉树5
这样我们就得到了一个原始二叉树,题目的要求是让求这个二叉树的后序遍历序列,
这样我们可以根据二叉树后序遍历的定义
写出该二叉树的后序遍历序列:DECBHGFA

一个小练习:
先序:ABDGHCEFI
中序:GDHBAECIF
后序结果给出:GHDBEIFCA

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值