已知先序和中序,计算后序的(c/c++)方法实现
2015-05-14 12:14
197 查看
已知先序和中序,计算后序的(c/c++)方法实现
char pro[30];
char in[30];
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)
{
char c;
int k;
if(in_s>in_e) return ;
if(in_s==in_e)
{
printf("%c",in[in_s]);
return ;
}
c=pre[pre_s];
k=find(c,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",c); /* 根节点输出。 */
}
main()
{
while(scanf("%s%s",pro,in)!=EOF)
{
pronum(pro,0,strlen(pro)-1,in,0,strlen(in)-1);
cout<<endl;
}
return 0;
}
char pro[30];
char in[30];
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)
{
char c;
int k;
if(in_s>in_e) return ;
if(in_s==in_e)
{
printf("%c",in[in_s]);
return ;
}
c=pre[pre_s];
k=find(c,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",c); /* 根节点输出。 */
}
main()
{
while(scanf("%s%s",pro,in)!=EOF)
{
pronum(pro,0,strlen(pro)-1,in,0,strlen(in)-1);
cout<<endl;
}
return 0;
}
相关文章推荐
- 已知后序和中序,计算先序的(c/c++)方法实现
- 已知一个抽象类Shapge,该类中有一个方法GetArea。 要求定义一个Rectangle类,继承Shape类,实现GetArea方法计算矩形面积。
- 图像相似度计算之直方图方法OpenCV实现
- 图像相似度计算之直方图方法OpenCV实现
- 回顾基础知识——实现阶乘计算的几种方法
- 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。
- Java实现二叉树的前序、中序、后序、层序遍历(递归方法)
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- 机器学习中那些相似度的计算方法及实现
- 常用的相似度计算方法原理及实现
- Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
- XTUExper数值计算方法 C语言实现
- Python实现计算两个时间之间相差天数的方法
- C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
- 【转载】python计算文件的行数和读取某一行内容的实现方法
- PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
- 通过先序遍历和中序遍历后的序列还原二叉树(实现方法)
- 关于android中使用weight属性实现多个layou比例布局的计算方法
- 利用算术(加减乘除)的方法实现从1到9计算等于100
- 蒙特卡洛方法计算圆周率的三种实现-MPI openmp pthread