您的位置:首页 > 其它

已知两种二叉树的遍历,求第三种

2016-08-03 21:02 274 查看
#include <stdio.h>
#include <string.h>
int k;

void build(int n,char *s1,char *s2,char *s);

int main()
{
char s1[100],s2[100],s[100];
while(scanf("%s%s",s1,s2)==2)
{
k=0;
int n=strlen(s1);
build(n,s1,s2,s);
s
='\0';
printf("%s\n",s);
}
return 0;
}

//void build(int n,char *s1,char *s2,char *s)
//{
//    if(n<=0)
//        return ;
//    s[k++]=s1[n-1];
//    int p=strchr(s2,s1[n-1])-s2;        //找到根节点在中序遍历的位置
//    //strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。
//    build(p,s1,s2,s);                   //递归构造左子树的先序遍历
//    build(n-p-1,s1+p,s2+p+1,s);         //递归构造右子树的先序遍历
//}

//若给出先序遍历和中序遍历,求后序遍历,那么程序改为
//void build(int n,char *s1,char *s2,char *s)
//{
//      if(n<=0)  return;
//      int p=strchr(s2,s1[0])-s2;
//      build(p,s1+1,s2,s);
//      build(n-p-1,s1+p+1,s2+p+1,s+p);
//      s[n-1]=s1[0];
//}
//已知先序遍历和后序遍历,无法唯一确定出二叉树。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐