您的位置:首页 > 理论基础 > 数据结构算法

第六章:数据结构基础。第三部分

2015-01-05 13:01 337 查看
6.3.3 二叉树的重建:

问题描述:

  已知二叉树的中序与前序或者后序序列,求其后序或者前序序列。

代码:

#include <stdio.h>
#include <string.h>
#define N 1000
//使用递归的方式;
char s
,s1
,s2
;
void build1(int n,char s1[],char s2[],char s[])
{
// 先序+中序,求后序
if(n<=0) return ;
int p=strchr(s2,s1[0])-s2;//s1[0]为根结点,找出其在s2中的位置。
build1(p,s1+1,s2,s);//s2中的前p个再建立,这时的根结点为s1[1],故为了重用,令s1++;
build1(n-p-1,s1+p+1,s2+p+1,s+p);
s[n-1]=s1[0];
}
void build2(int n,char s1[],char s2[],char s[])
{
// 后序+中序,求先序

}
int main()
{
while(scanf("%s%s",s1,s2)!=EOF)
{
int len=strlen(s1);
build1(len,s1,s2,s);     // 先序+中序,求后序
/*build2(len,s1,s2,s);*/   // 后序+中序,求先序
s[len]='\0';
printf("%s\n",s);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: