:
★实验任务
都说能力差的人是战斗力只有五的渣,那么 Winder 和他的小伙伴们就是记忆力只有 5
的渣了,当然,他们自己肯定是都不承认的,并且互相都认为自己是小伙伴中记忆力最好的
人。
这一天, Winder 和他的小伙伴们在玩一个游戏。渣渣们决定通过这个游戏来看看谁的
记忆力最差。这个游戏分为两天进行:
第一天, 他们以二叉树的方式进行站队(他们喜欢把自己当作二叉树,不要问我为什么,
可能是因为他们都是二……消音,你懂的),并且记住自己的左右子小伙伴分别是谁,而当
左/右没有子小伙伴时,他们要记住先序遍历序列下自己的前一个小伙伴/后一个小伙伴。
第二天,他们被要求说出自己前一天记下的两位小伙伴的信息,说不出来或者说错的,
那么就会被全体小伙伴鄙视。
说了这么多,其实就是 Winder 他们需要有人帮忙写个程序验证小伙伴们记住的信息是
否正确。
Ps:先序遍历下的第一个小伙伴不用记他的前一个小伙伴,最后一个小伙伴不用记他的
后一个小伙伴,作为替代,他们只要记住他们自己。
★数据输入
第一行为两个整数 N, M, Q( 2<N+M<=1000, 0<Q<=20)。
然后是 N 行,每行两个整数 a 和 b,代表 b 是 a 的左子小伙伴。
然后是 M 行,每行两个整数 a 和 b,代表 b 是 a 的右子小伙伴。
最后有一行 Q 个整数,每个整数代表要查询的小伙伴对应的整数编号。(保证查询的小
伙伴编号是存在的,保证构成的是一棵有唯一根的二叉树,编号值范围在 1~2000)
都说能力差的人是战斗力只有五的渣,那么 Winder 和他的小伙伴们就是记忆力只有 5
的渣了,当然,他们自己肯定是都不承认的,并且互相都认为自己是小伙伴中记忆力最好的
人。
这一天, Winder 和他的小伙伴们在玩一个游戏。渣渣们决定通过这个游戏来看看谁的
记忆力最差。这个游戏分为两天进行:
第一天, 他们以二叉树的方式进行站队(他们喜欢把自己当作二叉树,不要问我为什么,
可能是因为他们都是二……消音,你懂的),并且记住自己的左右子小伙伴分别是谁,而当
左/右没有子小伙伴时,他们要记住先序遍历序列下自己的前一个小伙伴/后一个小伙伴。
第二天,他们被要求说出自己前一天记下的两位小伙伴的信息,说不出来或者说错的,
那么就会被全体小伙伴鄙视。
说了这么多,其实就是 Winder 他们需要有人帮忙写个程序验证小伙伴们记住的信息是
否正确。
Ps:先序遍历下的第一个小伙伴不用记他的前一个小伙伴,最后一个小伙伴不用记他的
后一个小伙伴,作为替代,他们只要记住他们自己。
★数据输入
第一行为两个整数 N, M, Q( 2<N+M<=1000, 0<Q<=20)。
然后是 N 行,每行两个整数 a 和 b,代表 b 是 a 的左子小伙伴。
然后是 M 行,每行两个整数 a 和 b,代表 b 是 a 的右子小伙伴。
最后有一行 Q 个整数,每个整数代表要查询的小伙伴对应的整数编号。(保证查询的小
伙伴编号是存在的,保证构成的是一棵有唯一根的二叉树,编号值范围在 1~2000)
★数据输出
输入:
3 2 6
5 4
3 2
7 6
3 5
5 7
2 3 4 5 6 7
输出:
<3,0,2,0,5>
<2,1,3,1,5>
<5,0,4,0,7>
<4,1,5,1,7>
<7,0,6,0,6>
<6,1,7,0,6>
#include<stdio.h>
#define N 2002
int l[N]={0},r[N]={0},fa[N]={0},p[N]={0},k;
void xian(int x)
{
fa[k]=x;p[x]=k++;
if(l[x]==0&&r[x]==0)
return;
if(l[x]>0) xian(l[x]);
if(r[x]>0) xian(r[x]);
}
int main()
{
int n,m,q,i,id,a,b;
scanf("%d%d%d",&n,&m,&q);
for(i=0;i<n;i++)
{
scanf("%d%d",&a,&b);
l[a]=b;
fa[b]=a;
}
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
r[a]=b;
fa[b]=a;
}
while(fa[a]!=0) a=fa[a];
fa[0]=a;k=1;
xian(a);
fa[k]=fa[k-1];
for(i=0;i<q;i++)
{
scanf("%d",&id);
printf("<");
if(l[id]!=0)
printf("%d,1,",l[id]);
else
printf("%d,0,",fa[p[id]-1]);
printf("%d,",id);
if(r[id]!=0)
printf("1,%d",r[id]);
else
printf("0,%d",fa[p[id]+1]);
printf(">\n");
}
return 0;
}