Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
125664 吴悠 对称二叉树 C++ 通过 100 495 MS 11972 KB 900 2024-01-23 20:30:31

Tests(25/25):


#include<iostream> using namespace std; int n,tsum,maxs; struct Node{ int data; int cl; int cr; }tree[1000001]; bool judge(int lr,int rr){ if(lr==-1 && rr==-1){ return true; } if(lr!=-1 && rr==-1){ return false; } if(lr==-1 && rr!=-1){ return false; } if(tree[lr].data!=tree[rr].data){ return false; } if(judge(tree[lr].cl,tree[rr].cr)==true && judge(tree[lr].cr,tree[rr].cl)==true){ return true; } else return false; } void dfs(int root){ tsum++; if(tree[root].cl!=-1){ dfs(tree[root].cl); } if(tree[root].cr!=-1){ dfs(tree[root].cr); } } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>tree[i].data; } for(int i=1;i<=n;i++){ cin>>tree[i].cl>>tree[i].cr; } for(int i=1;i<=n;i++){ if(judge(i,i)==true){ dfs(i); if(tsum>maxs){ maxs=tsum; } } tsum=0; } cout<<maxs<<endl; return 0; }


测评信息: