RT,看了好几遍都没看出哪里错了......
#include<cstdio>
using namespace std;
struct node
{
int l=0,r=0;
}tree[1000020];
int n;
int ans;
void dep(int d,node a)
{
if(a.l==0&&a.r==0){ //若左节点与右节点都是0,即当前是叶子节点
if(d>ans)ans=d;
return;
}
dep(d+1,tree[a.l]);
dep(d+1,tree[a.r]);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int a,b;
scanf("%d %d",&a,&b);
if(a!=0&&b!=0)
tree[i].l=a,tree[i].r=b;
}
dep(1,tree[1]);
printf("%d",ans);
return 0;
}
求大佬指教!QwQ
(另外问下一般存二叉树的方法是什么,用链表还是数组,还是说邻接表也可以)