已知树的前序、中序,求后序的c++实现&已知树的后序、中序,求前序的c++实现
2024-10-19 08:08:25
#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;
}
最新文章
- 如何在 ASP.NET 4.6 与 IIS10 中运用 HTTP/2 ?
- Gold Game
- Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表
- [SLAM]2D激光线特征提取
- Queue、进程、线程、协程
- Java之对象池
- Android N分屏模式Activity生命周期的变化
- Kali+Win7双系统
- gulp前端自动化工作流
- win10 uwp 改变鼠标
- 【ANT】运行JMeter用例的build.xml
- 从1.5K到18K,一个程序员的5年成长之路
- ubuntu临时修改ip,mac的方法示例
- C# 对串口的操作
- JavaScript 获取完整当前域名
- 《Mysql 锁》
- Vux项目搭建
- 中间人攻击工具mitmf(另类的XSS注入攻击)
- javaweb-Excel导入导出后台代码
- 转载 Linux top命令详解