从前序+中序或者后序+中序序列中恢复二叉树过程

给出前序遍历和中序遍历,如何绘制出二叉树:
如果给出遍历产生的一串字符,不容易确定各个字符在树中的具体位置,因而需要两个遍历串相结合才能画出一棵二叉树。
如,给出前序遍历ADFGHKLPQRWZ,中序遍历GFHKDLAWRQPZ。
其具体寻找过程如下:
其中矩形内表示当前节点的左右子树的元素,圆圈内为当前节点,矩形内表示的是当前节点在该子树中下一个访问的节点。
首先在前序序列中找到第一个访问的节点A,即根节点,再在中序序列中找到A,由于其为中序序列,因而左边的为其左子树中元素,右边的为右子树元素。
然后再在前序序列中寻找A的下一个访问元素,为D,以此类推按照前序访问的顺序每次寻找下一个访问元素,然后以该元素为根把相应中序序列分为左树元素和右树元素,直到达到最后一个元素。且由图中标出的顺序可知,前序+中序恢复树的过程是从左到右的,注意。
这里写图片描述
考虑后序+中序序列恢复树的过程,
后序序列为FGHDALPQRZWK
中序序列为GFHKDLAWRQPZ
如图为寻找过程,注意,图中所标示出的序号为寻找节点的顺序,而不是访问顺序。由于给出的是后序序列和中序序列,而在后序序列中,首先可以确定的是最后一个访问的节点必然是树的根节点,因而可以确定K位置,根据前面介绍的原则,在中序序列中分出左右子树。然后回到后序序列中确定在访问K之前访问的节点为其右节点W,然后重复上述步骤。其总体而言就是先确定根节点,然后分左右子树,再去寻找前一个访问的节点,由标注的的寻找次序可知,其与前序序列+中序序列相反,寻找顺序是从右向左。
这里写图片描述

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

弹指间LDL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值