利用递归方法已知先序,中序求后序
2018-03-27 23:03
267 查看
Description二叉树的遍历是数据结构中的重要操作。
已知某个二叉树的先序和中序、或者中序和后序遍历的次序。可以唯一确定该二叉树。Input两行
第一行:先序遍历的序列
第二行:中序遍历的序列Output输出该二叉树后序遍历的序列。Sample InputABCD
BADCSample OutputBDCA
已知某个二叉树的先序和中序、或者中序和后序遍历的次序。可以唯一确定该二叉树。Input两行
第一行:先序遍历的序列
第二行:中序遍历的序列Output输出该二叉树后序遍历的序列。Sample InputABCD
BADCSample OutputBDCA
#include <stdio.h> #include <string.h> int find(char c,char a[],int s,int e) { int i; for(i=s;i<=e;i++) { if(a[i]==c) return i; } } void pronum(char pre[],int pre_s,int pre_e,char in[],int in_s,int in_e) { int k; if(in_s>in_e)/*递归两个终结的地方*/ return; if(in_s==in_e) { printf("%c",in[in_s]); //输出中序遍历的头结点 return; } k=find(pre[pre_s],in,in_s,in_e); pronum(pre,pre_s+1,pre_s+(k-in_s),in,in_s,k-1); pronum(pre,pre_s+k-in_s+1,pre_e,in,k+1,in_e); printf("%c",pre[pre_s]); //最后输出前序的头,即中结点 } int main() { char pre[100],in[100]; gets(pre); gets(in); pronum(pre,0,strlen(in)-1,in,0,strlen(pre)-1);//从0到长度减一都有字符即头尾包含 return 0; }
相关文章推荐
- 二叉树的重建 已知前序 中序 求后序 递归的方法
- 面试题6--利用前序和中序遍历重构二叉树--递归方法
- Java实现二叉树的前序、中序、后序遍历(非递归方法)
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- [C++]数据结构:二叉树中已知先序中序求后序的递归方法
- 【程序26】 利用递归方法求5!
- 用递归的方法计算斐波那契数列的通项f(n),已知f1 = 1 ,f2 = 1,以后每项都是前两项的和。
- 先序,中序,后序,求叶子结点数,深度,拷贝,几种二叉树的常见递归使用方法
- 电子科技大学推免复试题:利用递归方法找出一个数组中的最大值和最小值
- 利用递归方法输出1~10所有整数的阶乘
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- 已知树的前序遍历和中序遍历,求后序遍历的方法(转)
- 已知先序和中序,计算后序的(c/c++)方法实现
- Python利用递归实现文件的复制方法
- Python利用递归和walk()遍历目录文件的方法示例
- 【程序22】 题目:利用递归方法求5!。
- 二叉树的前序、中序、后序遍历的非递归方法 python
- 3.1题目: 利用递归方法实现一个函数,该函数能够实现n的阶乘,即 n! = n*(n-1)*…*3*2*1;
- 算法题:利用递归方法求n!
- 从Oracle数据库,利用递归方法,读取 n级菜单,jdbc+jndi