Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125661 | 林泽豪 | 对称二叉树 | C++ | 运行出错 | 16 | 7 MS | 252 KB | 740 | 2024-01-23 20:28:40 |
#include<bits/stdc++.h> using namespace std; const int maxn=110; int f[maxn]; struct tree{ int right,left,data; }tree[maxn]; int ds[maxn],df=0; bool nmsl(int o,int n){ if(o!=-1){ nmsl(tree[o].left ,n); ds[++df]=f[tree[o].data]; nmsl(tree[o].right,n ); if(o==n){ for(int i=1;i<=(df+1)/2;i++)if(ds[i]!=ds[df+1-i]){ return 0; } return 1; } } } void sb(int nod){ if(nod!=-1){ if(nmsl(nod,nod)==1){ cout<<df; df=0; exit(0); }else{ df=0; sb(tree[nod].left); sb(tree[nod].right); } } } int main() { int n; cin>>n; for(int i=1;i<=n;i++)cin>>f[i]; for(int i=1;i<=n;i++){ cin>>tree[i].left>>tree[i].right; tree[i].data =i; } sb(1); }