战五渣的记忆力

: ★实验任务
都说能力差的人是战斗力只有五的渣,那么 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;    
}    






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值