二叉树中有一个经典的问题就是,已知给定二叉树的前序遍历序列和中序遍历序列,求其后序遍历序列。采用递归的思想,比较容易解决。代码如下:
/*
a 是前序序列
b 是中序序列
后序序列将保存在c中
*/
void PostOrder(const char a[], const char b[], char c[], int starta, int startb, int startc, int len)
{
 if(len==0) return;
 if(len==1) { c[startc] = a[starta]; return; }
 c[startc+len-1] = a[starta];// 处理树根
 int i = startb;
 while(b[i]!=a[starta]) ++i;
 int leftlen = i - startb;
 int rightlen = len - leftlen - 1;
 PostOrder(a,b,c,starta+1,startb,startc,leftlen);// 构造左子树的PostOrder
 PostOrder(a,b,c,starta+leftlen+1,startb+leftlen+1,startc+leftlen,rightlen);// 构造右子树的PostOrder
}
void PostOrder(const char a[], const char b[], char c[])
{
 int len = strlen(a);
 PostOrder(a,b,c,0,0,0,len);
 c[len] = '/0';
}

前序+中序 =〉后序相关推荐

  1. 二叉树深度优先 java_二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) java实现...

    二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的.对于二叉树,有深度遍历和广度遍历,深度遍历有前序.中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历.由于树的 ...

  2. 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)

    手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...

  3. 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)

    把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...

  4. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  5. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  6. 二叉树前序、中序、后序遍历求法

    二叉树前序.中序.后序遍历相互求法 二叉树的三种遍历方法: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序 ...

  7. PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次) 转载陈小龙哈2017...

    http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点 ...

  8. 二叉树的前序、中序、后序遍历与创建

    #include <iostream> #include <string> #include <stack> using namespace std; struct ...

  9. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

最新文章

  1. 使用HttpWebRequest请求API接口以及其他网站资源
  2. Dubbo 云原生之路:ASF 毕业一周年、3.0 可期
  3. MySQL8 重置改root密码及开放远程访问
  4. 断路器操作机构分合闸线圈电流特征曲线特点
  5. springboot api文档_SpringCloud/SpringBoot - 自动生成API文档
  6. 漫步最优化九——泰勒级数
  7. Luogu P1550 [USACO08OCT]打井Watering Hole
  8. 手机满足不了华为 华为拟在年底前发布带5G的8K电视!
  9. 重定向无法设置页面编码?
  10. Windows10设置动态桌面壁纸
  11. 网络编程在线英英词典之登录模块实现(四)
  12. 二级下拉菜单缓慢渐变
  13. Django学习记录之——csrf跨站请求伪造校验
  14. Planting Trees Day 植树节 一起去种树
  15. 机器学习自动化 要学习什么_从电视节目“先生”中学习自动化网络安全。 机器人'
  16. 【九】【vlc-android】vlc-aout音频流输出端源码分析
  17. 几种常见的线程池及使用场景
  18. 寿险核心业务系统哪家强
  19. HDOJ 2021-2030
  20. 打折优惠——循环入门

热门文章

  1. vRealize Automation 8.0+安装配置
  2. 思必驰宣布完成5亿元D轮融资 继续深化AI生态布局
  3. 如何使用帆软BI直接分析明道云数据
  4. (谷歌)Chrome浏览器添加扩展程序白名单
  5. 宇视科技POE摄像机供电方式
  6. NOI Online #2 普及组 第二题:荆轲刺秦王
  7. python学习笔记---Python基础【廖雪峰】
  8. 测试架构需要具备哪些能力
  9. 新的网络架构按下“快进键” 快步走入互联网下半场
  10. 【京东】商品评价数据采集+买家评论数据+卖家评论数据采集+行业数据分析+行业数据质检分析