二叉树遍历方式之间的关系(递归)
来源:互联网 发布:狩猎者安全防护软件 编辑:程序博客网 时间:2024/06/05 06:50
已知三种序列中任意两种(前序和后序这一组合除外),均可递归求出另一序列唯一解。今天下午的成果,主要是复习一下递归思想
1 /** 已知二叉树前序和中序序列 输出后序序列 2 pre前序序列 in中序序列 end后序序列 3 */ 4 void pre_in(int length, char *pre, char *in, char *end) 5 { 6 int p; 7 if(length<=0) return; 8 p=strchr(in,pre[0])-in; //获取前序第一个字符在中序序列中的位置 9 pre_in(p, pre+1, in, end);//递归左子树 10 pre_in(length-p-1, pre+p+1, in+p+1, end+p);//递归右子树 11 end[length - 1] = pre[0];// 把根节点放在最后 12 }13 /** 已知二叉树后序和中序序列 输出后序序列 14 pre前序序列 in中序序列 end后序序列 15 */ 16 void in_end(int length, char *in, char *end, char *pre)17 {18 if(length<=0)return;19 int p=strchr(in,end[length-1])-in;20 in_end(p, in, end, pre+1);21 in_end(length-1-p, in+p+1, end+p, pre+p+1);22 pre[0]=end[length-1];//把根节点放在首要位置 23 }24 /**已知二叉树后序和中序序列 输出后序序列 25 **pre前序序列 in中序序列 end后序序列 26 问题:前序和后序不能唯一确定中序序列27 *此可以求出对应的度数部位不为0的左子树不为空的中序序列28 *如:E G F -->pre29 * F G E -->mid30 * F G E -->end31 但是对于以下情况不可输出 32 E G F33 E F G34 F G E 35 */ 36 void pre_end(int length, char *pre, char *end, char *in)37 {38 if(length<=0)return;39 if(length==1){40 in[0]=pre[0];return;41 }42 int p= strchr(end,pre[1])-end; 43 pre_end(p+1, pre+1, end, in);44 pre_end(length-(p+1)-1, pre+p+2, end+p+1, in+p+1);45 in[p+1]=pre[0];//根节点放在中间位置 46 }
- 二叉树遍历方式之间的关系(递归)
- 二叉树的遍历方式(递归)
- 二叉树的遍历方式(递归)
- 二叉树的三种非递归遍历方式。
- 二叉树的创建即遍历(递归方式)
- 二叉树遍历方式的转化(递归写法)
- (C++)二叉树的建立与递归方式遍历
- 二叉树的三种遍历方式(递归、非递归和Morris遍历)
- 四种遍历二叉树的方式(递归,非递归)
- 二叉树的前中后序遍历,递归和非递归方式
- 二叉树的遍历(递归遍历)
- 二叉树的两种遍历方式[递归遍历][非递归遍历]
- 数据结构--树:二叉树的遍历方式(递归和非递归)
- 二叉树的四种遍历方式(非递归和递归)
- 二叉树的三种遍历方式(递归和非递归)
- 二叉树的三种遍历方式(递归与非递归详细实现)
- 二叉树的三种遍历方式(递归 和 非递归)
- 二叉树的遍历(递归+非递归+层次遍历)
- 【C基础】动态内存分配
- umask函数笔记
- UNIX操作系统
- <C++沉思录>学习笔记
- ubuntu command for me
- 二叉树遍历方式之间的关系(递归)
- boost库
- Javascript中Dom常用操作总结
- CSS和HTML结合的方式
- java 数据库编程
- 发现一个nginx LUA开发Web App的框架
- 信号量多线程同步输出 123123123
- 测试b3log的查询方法
- AIR 自定义窗口的外观