解题思路:递归,通过中序和后序推出先序。
参考代码:
//后序排列最后一个一定是根节点
//从中序排列中找出根,前半段是左子树,后半段右子树
//后序排列中最后一个能找到的子树中有的字母是子树的根(也有可能是整棵树)
#include<stdio.h>
#include<string.h>
char a[100]/*存中序*/, b[100]/*存后序*/;
void tree(int d, int e)//递归
{
int i, f, c, j;
c = 0;//c归零
if (d > e) return;//查找范围为d-e(一颗树),范围中没东西了就结束查找
for (j = strlen(a) - 1; j >= 0; j--)//倒着找,以便找出最后一个
{
for (i = d; i <= e; i++)//遍历整棵树
{
if (a[i] == b[j])//找到了就记录并结束查找
{
c = i;//24~27行c变动的缘由
break;
}
}
if (c)//c有变动,退出循环(没变动说明没找到或者最后才找到)
{
break;
}
}
printf("%c", a[c]);//输出根
tree(d, c - 1);//先对左子树使用函数
tree(c + 1, e);//再对右子树使用函数
}
int main()
{
int i, c;
scanf("%s %s", a, b);
tree(0, strlen(a) - 1);//调用函数
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:511 |
【偶数求和】 (C++代码)浏览:702 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:735 |
简单的a+b (C语言代码)浏览:537 |
这可能是一个假的冒泡法浏览:985 |
【亲和数】 (C语言代码)浏览:501 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:463 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1233 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:624 |
【计算球体积】 (C语言代码)浏览:1101 |