树的层数

#include
#include
#include
#include
#include
using namespace std;
struct ss{
    int son1;
int son2;
}
T[10010];
int ans=1,Max=0;
void  dfs(int n){
   if(T[n].son1)  { ans++; dfs(T[n].son1); }//有左孩子的时候遍历左孩子,深搜
   if(T[n].son2)  { ans++; dfs(T[n].son2); }//有右子的时候遍历右孩子,深搜
   if(ans>Max) Max=ans;
    ans--;//返回上一层
}
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
    int x;
    scanf("%d",&x);
    if(T[x].son1==0)
        {
            T[x].son1=i;
        printf("T[%d].son1==%d\n",x,i);
        }
    else
       {
            T[x].son2=i;
        printf("T[%d].son2==%d\n",x,i);
        }
    }
   dfs(1);
   cout<    return 0;
}

你可能感兴趣的:(树的层数)