已知树的前序、中序,求后序的c++实现&已知树的后序、中序,求前序的c++实现
2013-10-05 09:30
495 查看
#include"iostream" using namespace std; int pre[30]; int in[30]; int post[30]; int indexOfRootIn(int start,int stop,int root){ for(int j=start;j<=stop;j++){ if(in[j]==root){ return j; } } return -1; } void postOrder(int pre_start,int pre_end,int in_start,int in_end,int length){ if(length==0) return; if(length==1){ cout<<in[in_start]<<endl; return; } int root = pre[pre_start]; int index = indexOfRootIn(in_start,in_end,root); int len1=(index-in_start); int len2=(in_end-index); postOrder(pre_start+1,pre_start+index,in_start,index-1,len1); postOrder(pre_start+index+1,pre_end,index+1,in_end,len2); cout<<root<<" "<<endl; } void preOrder(int post_start,int post_end,int in_start,int in_end,int length){ if(length==0) return; if(length==1){ cout<<in[in_start]<<endl; return; } int root = post[post_end]; int index = indexOfRootIn(in_start,in_end,root); int len1= index-in_start; int len2= in_end-index; cout<<root<<" "<<endl; preOrder(post_start,post_start+index-1,in_start,index-1,len1); preOrder(post_start+index,post_end-1,index+1,in_end,len2); } int main(){ int N; cin>>N; for(int i=0;i<N;i++){ cin>>post[i]; } for(int i=0;i<N;i++){ cin>>in[i]; } preOrder(0,N-1,0,N-1,N); return 0; }
相关文章推荐
- 已知树的前序、中序,求后序的c++实现&已知树的后序、中序,求前序的c++实现
- 已知树的前序、中序,求后序的java实现&已知树的后序、中序,求前序的java实现
- 已知树的前序、中序,求后序的java实现&已知树的后序、中序,求前序的java实现
- 在windows 与Linux间实现文件传输(C++&C实现)
- 【工程】二叉树已知前序/中序的顺序,构造树的递归等实现
- 由前序遍历和中序遍历重建二叉树和C语言模式实现C++继承和多态——题集(十四)
- C++多态的实现&&虚拟函数表
- C++ 实现 ping 功能&& 域名(URL)解析实际 IP地址
- C++ 编程实现--单例模式-->初学者
- 用C实现C++的多态---剖析GTK的"对象" (一)
- extern "C" c++如何实现函数的重载
- C++虚函数详解&实现机制&多态性
- C++实现类String--含构造函数以及重载>>,<<,>,<,==,=
- "找出字符串中第一个不重复的字符"和"找出字符串中最后一个重复的字符"的两种方法的C++实现
- C++&java实现的一颗纯MCTS
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- 设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)
- 探讨:C++实现链式二叉树(用非递归方式先序,中序,后序遍历二叉树)
- 算法思路重新实现-堆排序 中的 C++ & Java
- win32 API &c++架构实现我的画图板