Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125662 | 吴悠 | 对称二叉树 | C++ | 运行出错 | 32 | 0 MS | 256 KB | 896 | 2024-01-23 20:28:46 |
#include<iostream> using namespace std; int n,tsum,maxs; struct Node{ int data; int cl; int cr; }tree[107]; 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; }