48分求助!
查看原帖
48分求助!
1044870
Lyrith_with_xQ楼主2023/8/22 11:20
#include<bits/stdc++.h>
using namespace std;

struct node
{
	int v,l,r;
}tree[1000005];

int n,mmax=-1;

bool check(long long i,long long j)
{
    if(i==-1&&j==-1)return true;
    else if(i==-1||j==-1)return false;
    else if(tree[i].v!=tree[j].v)return false;
    else return check(tree[i].l,tree[j].r)&&check(tree[i].r,tree[j].l);
}

int palindrome_tree(long long ind)
{
    return ind==-1? 0:palindrome_tree(tree[ind].l)+palindrome_tree(tree[ind].r)+1;
}

int main()
{
	cin>>n;
	for(int i=0;i<n;i++)cin>>tree[i].v;
	for(int i=0;i<n;i++)cin>>tree[i].l>>tree[i].r;
	for(int i=0;i<n;i++)
	{
	    if(check(i,i))mmax=max(mmax,palindrome_tree(i));
	}
	cout<<mmax;
	return 0;
} 
2023/8/22 11:20
加载中...