已知两种二叉树的遍历,求第三种
2016-08-03 21:02
274 查看
#include <stdio.h> #include <string.h> int k; void build(int n,char *s1,char *s2,char *s); int main() { char s1[100],s2[100],s[100]; while(scanf("%s%s",s1,s2)==2) { k=0; int n=strlen(s1); build(n,s1,s2,s); s ='\0'; printf("%s\n",s); } return 0; } //void build(int n,char *s1,char *s2,char *s) //{ // if(n<=0) // return ; // s[k++]=s1[n-1]; // int p=strchr(s2,s1[n-1])-s2; //找到根节点在中序遍历的位置 // //strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。 // build(p,s1,s2,s); //递归构造左子树的先序遍历 // build(n-p-1,s1+p,s2+p+1,s); //递归构造右子树的先序遍历 //} //若给出先序遍历和中序遍历,求后序遍历,那么程序改为 //void build(int n,char *s1,char *s2,char *s) //{ // if(n<=0) return; // int p=strchr(s2,s1[0])-s2; // build(p,s1+1,s2,s); // build(n-p-1,s1+p+1,s2+p+1,s+p); // s[n-1]=s1[0]; //} //已知先序遍历和后序遍历,无法唯一确定出二叉树。
相关文章推荐
- 已知两种遍历序列求原始二叉树
- 二叉树:由已知两种遍历求未知遍历
- 已知二叉树的两种遍历序列重建树
- 已知二叉树的两种遍历序列,求出另一种遍历序列
- 二叉树三种遍历方法(根据两种排序求第三种的顺序)
- 已知二叉树的某两种遍历结果,输出另一种遍历的结果(附源码)
- 前序遍历,中序遍历和后序遍历 & 已知两种遍历,求第三种遍历
- 二叉树的遍历(前序 中序 后序)和已知两种遍历顺序求另外一种遍历顺序(含实例)
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 已知某二叉树的某两种遍历序列,求另一种遍历序列面试题解法总结(转)
- 剑指Offer算法题之已知两种遍历方式重建二叉树--面试题6:重建二叉树
- 【郝斌数据结构自学笔记】70-74_已知两种遍历序列求原始二叉树概述_已知先序和中序求后序_已知中序和后序求先序_树的应用简单介绍
- 二叉树 已知两种遍历恢复二叉树
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 中序遍历二叉树的非递归的两种实现、线序遍历统计二叉树的叶子数、二叉树的深度
- 【树】已知二叉树前序和中序遍历求后序遍历,及中序和后序遍历求前序遍历
- 根据树的两种遍历序列求第三种遍历序列
- 两种方式遍历二叉树--递归方式和非递归方式