1 条题解

  • 1
    @ 2024-5-17 17:37:15
    #include<bits/stdc++.h>
    using namespace std;
    struct node{long long l,r,val;}bt[1000002];
    bool same(long long now1,long long now2){
    	if(now1==-1&&now2==-1) return true;
    	if(now2==-1||now1==-1) return false;
    	if(bt[now1].val!=bt[now2].val) return false;
    	return same(bt[now1].l,bt[now2].r)&&same(bt[now1].r,bt[now2].l);
    }
    int count(long long now){
    	return now==-1?0:count(bt[now].l)+count(bt[now].r)+1;
    }
    int main(){
    	int n,ans=0;cin>>n;
    	for(int i=1;i<=n;i++) cin>>bt[i].val;
    	for(int i=1;i<=n;i++) cin>>bt[i].l>>bt[i].r;
    	for(int i=1;i<=n;i++) if(same(i,i)) ans=max(ans,count(i));
    	return 0&printf("%d",ans);
    }
    

    AC

    • 1

    [NOIP2018 普及组] 对称二叉树

    信息

    ID
    1372
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    43
    已通过
    20
    上传者