//先序a 和中序b 求后序 //已知后序a 中序b 求先序
来源:互联网 发布:电脑软件学校招生 编辑:程序博客网 时间:2024/04/24 05:08
#include<iostream>
#include<string.h>
using namespace std;
char a[30],b[30];
//先序a 和中序b 求后序
void dg(int r1,int l1,int r2,int l2)
{
int i;
if(r1>l1) return;
for(i=r2;b[i]!=a[r1];i++);
dg(r1+1,l1-l2+i,r2,i-1);
dg(l1-l2+i+1,l1,i+1,l2);
cout<<a[r1];
}
//已知后序a 中序b 求先序
void fun(int r1, int l1, int r2, int l2)
{
int i;
if(r1>l1)
return;
putchar(a[l1]);
for(i=r2;b[i]!=a[l1];++i);
fun(r1,l1-l2+i-1,r2,i-1);
fun(l1-l2+i,l1-1,i+1,l2);
}
int main()
{
while(cin>>a>>b)
{
int l=strlen(a);
dg(0,l-1,0,l-1);
cout<<endl;
}
return 0;
}
#include<string.h>
using namespace std;
char a[30],b[30];
//先序a 和中序b 求后序
void dg(int r1,int l1,int r2,int l2)
{
int i;
if(r1>l1) return;
for(i=r2;b[i]!=a[r1];i++);
dg(r1+1,l1-l2+i,r2,i-1);
dg(l1-l2+i+1,l1,i+1,l2);
cout<<a[r1];
}
//已知后序a 中序b 求先序
void fun(int r1, int l1, int r2, int l2)
{
int i;
if(r1>l1)
return;
putchar(a[l1]);
for(i=r2;b[i]!=a[l1];++i);
fun(r1,l1-l2+i-1,r2,i-1);
fun(l1-l2+i,l1-1,i+1,l2);
}
int main()
{
while(cin>>a>>b)
{
int l=strlen(a);
dg(0,l-1,0,l-1);
cout<<endl;
}
return 0;
}
阅读全文
1 0
- //先序a 和中序b 求后序 //已知后序a 中序b 求先序
- hihocoder #1049 : 后序遍历 (已知先序遍历和中序遍历求后序遍历)
- 已知先序,中序,求后序
- 已知先序遍历和中序遍历求后序遍历
- 已知先序遍历和中续遍历求后序遍历
- 已知后序和中序,计算先序的(c/c++)方法实现
- 已知先序和中序,计算后序的(c/c++)方法实现
- 二叉树已知先序遍历和中序遍历得到后序遍历
- 已知先序和中序求后序或中序和后序求先序
- 已知中序和后序,求前序
- 已知中序和后序建树
- noip2001 求先序排列 (已知中序+后序,求解先序 ;分治)
- 二叉树构造 (已知先序 和中序)
- 已知先序遍历和中序遍历
- 已知先序、中序求后序;已知中序、后序求先序(C++)
- 已知二叉树的先序和中序求后序和已知中序和后序求前序
- 二叉树:已知先序和中序求后序,已知中序和后序求先序
- 已知先序+中序构造二叉树,已知后序+中序构造二叉树(C语言)
- Linux的文本处理工具
- Lua 介绍及应用
- [Coursera机器学习]Anomaly Detection and Recommender Systems WEEK9编程作业
- DOS find
- 移动App和远程服务器笔记(1)
- //先序a 和中序b 求后序 //已知后序a 中序b 求先序
- 安装最新版MySQL 5.7.19的方法
- 扩展欧几里得算法
- kubernetes安全机制--Admission Control 准入控制
- C#批量为图片添加边框、日期、宝宝信息
- Tensorflow学习记录(一)
- X86、X64和X86_64区别
- matlab中的协方差函数
- Python Module