6.3.3 二叉树重建算法入门经典双十一大礼包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.3.3 二叉树重建算法入门经典双十一大礼包相关的知识,希望对你有一定的参考价值。
输入一棵二叉树的先序遍历和中序遍历,输出它的后序遍历序列。
运行如图
目前还有一些细节没有懂,不过不影响我仍然喜欢学习的心情~
#include<stdio.h> #include<string.h> #define N 1000 char s1[N],s2[N],ans[N]; //s1是先序遍历,s2是中序遍历 void build(int n,char *s1,char *s2,char *s) {//构造长度为n的后续遍历。 if(n <= 0) return; int p = strchr(s2,s1[0])-s2;//找到根结点在中序遍历中的位置 build(p,s1+1,s2,s);//递归构造左子树的后续遍历 build(n-p-1,s1+1+p,s2+1+p,s+p);//递归构造右子树的后续遍历 s[n-1] = s1[0];//把根结点添加到最后 return; } int main() { while(scanf("%s%s",s1,s2)!=EOF) { int n = strlen(s1); build(n,s1,s2,ans); ans[n] = ‘\\0‘;//ans存储后续遍历序列 printf("%s\\n",ans); } return 0; }
以上是关于6.3.3 二叉树重建算法入门经典双十一大礼包的主要内容,如果未能解决你的问题,请参考以下文章