已知中序遍历序列和后序遍历序列,求先序遍历

通过中序遍历和后序遍历求先序

  • 中序:BDCEAFHG
  • 后序:DECBHGFA
  • 求先序遍历结果:

先求原始二叉树
后序遍历中最后出现的是根,所以A是整棵树的根,在结合中序遍历来看
BDCE是A的左子树,而FHG是A的右子树,所以我们就有了下面的图:
原始二叉树1
而BDCE序列中谁是整个序列根,还得看后序谁最后出现,答案是B
此时再看中序中根B左端没有左子树,右端有DCE,所以DCE是B的右子树
我们得到下面的图:
原始二叉树2
再看D、C、E在后序遍历中C结点最后出现,所以C是根,此时再到中序遍历看可以看到C的左端是D, 右端是E, 所以C的左子树是D, 右子树是E, 于是我们得到下图:
原始二叉树三
再看F、H、G三个结点,后序遍历序列F最后出现,所以F是根结点,
再回去看中序HG在F右端,所以HG是F的右子树得到下图:
原始二叉树四
由于H、G在后序遍历序列G最后出现,所以G是H, G中的根,再看
中序中G左端只有一个H, 所以H是G的左子树,得到最终原始二叉树:
原始二叉树五
我们再根据上面的这个原始二叉树退出前序遍历序列的结果:
前序遍历结果:ABCDEFGH

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值