| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 313 人关注过本帖
标题:一个重构二叉树的题。。希望哪位大神帮我讲解一下这个程序。。。实在看不懂 ...
取消只看楼主 加入收藏
深蓝浅蓝qyz
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-6
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
一个重构二叉树的题。。希望哪位大神帮我讲解一下这个程序。。。实在看不懂啊。。。在此谢过了。。。
重构二叉树
Description
根据输入的二叉树前序和中序遍历序列重构二叉树,输出对应节点的左右子节点。
输入:
第一行是一个整数N(1<=N<=20),表示有多少个测试例子。以下每个测试例子的第一行是本测试例子的二叉树的前序遍历,第二行是中序遍历,第三行首先是一个整数M,表示要求输出结果的数目,以后有M个节点,每个中间由一个空格隔开。
输出:
每行输出一个例子的所有结果,如果其子节点为空则输出字符#,同一例子的不同节点的输出结果之间用一个空格隔开
Sample Input
1
ABCDEF
CBEDFA
3 A B C
Sample Output
B# CD ##


#include
using namespace std;
char a[100],b[100],s[100][3];
int cases,n,i,lena,lenb,c[100],d[100];
struct haha
{
char c;
int k;
}tree[100];
void insert(char cc,int i)
{
if(c[cc]
搜索更多相关主题的帖子: 测试 左右 二叉树 
2012-03-25 20:31
深蓝浅蓝qyz
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-3-6
收藏
得分:0 
程序如下:
#include<iostream>
using namespace std;
char a[100],b[100],s[100][3];
int cases,n,i,lena,lenb,c[100],d[100];
struct haha
{
char c;
int k;
}tree[100];
void insert(char cc,int i)
{
if(c[cc]<tree[i].k)
{
if(tree[2*i].c=='#') { tree[2*i].c=cc; tree[2*i].k=c[cc]; d[cc]=2*i; }
else insert(cc,2*i);
}
else
{
if(tree[2*i+1].c=='#') { tree[2*i+1].c=cc; tree[2*i+1].k=c[cc]; d[cc]=2*i+1; }
else insert(cc,2*i+1);
}
}
int main()
{
scanf("%d",&cases);
while(cases--)
{
for(i=0;i<100;i++) tree[i].c='#';
scanf("%s%s%d",a,b,&n);
for(i=1;i<=n;i++) scanf("%s",s[i]);
lena=strlen(a);lenb=strlen(b);
//a[lena+1]='\0';
// for(i=lena;i>0;i--) a[i]=a[i-1];
for(i=0;i<lenb;i++) c[b[i]]=i+1;
tree[1].c=a[0];tree[1].k=c[a[0]];d[a[0]]=1;
for(i=1;i<lena;i++) insert(a[i],1);
printf("%c%c",tree[2*d[s[1][0]]].c,tree[2*d[s[1][0]]+1].c);
for(i=2;i<=n;i++) printf(" %c%c",tree[2*d[s[i][0]]].c,tree[2*d[s[i][0]]+1].c);
printf("\n");
}
return 0;
}

奋斗主旋律,未来在我手中!
2012-03-25 20:33
快速回复:一个重构二叉树的题。。希望哪位大神帮我讲解一下这个程序。。。实在看 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027831 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved