已知前序遍历和中序遍历求后序遍历

已知前序遍历和中序遍历求后序遍历


1.知识必备

①二叉树的三种遍历
②递归的原理

2.题目描述

已知二叉树的前序遍历为(  ABCDFE  ),中序遍历(BADFCE ),求该二叉树的后序遍历。

3.求解思想

前序,中序遍历顺序图

在前序遍历中,根节点将中序遍历分为两个部分,左子树和右子树。如果将元素个数进行简化,假设在中序遍历中被根节点分割的左右子树中都只有一个元素,那么可以很容易得到二叉树的形状,也就可以得到后序遍历。说明当这个问题简化成小问题时,可以很容易解决。

4.算法步骤

①在前序遍历中取第一个点,即为根节点。
②在中序遍历中找到这个点所在的位置。下标从 0 开始,假设找到根节点在下标为 index 的位置 
③根节点将字符串分为左右两个子串(看上图的中序遍历),左子树 为  父串 的(0,index-1),右子树为父串的
( index+1 ,父串的结尾)。注:括号内容的含义,(起点下标,终点下标)   ;  知道了左右子树的起始位置和终止位置,那么左右子树的长度可以很容易得到(终点下标 - 起点下标 + 1),那么左子树在前序遍历中的位置也可以很容易得到 (1,index),右子树同理。
④将左右子树对应的前序遍历,中序遍历,在进行步骤①-③的操作,直到左右子树的长度为 0

5.源代码

下载地址:
http://download.csdn.net/detail/qq_28648083/9801315



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值