트 리 층수 & BFS 깊이 찾기 (템 플 릿)


이 예 는 이 진 트 리 입 니 다. 이 진 트 리 가 아니라면 vector 를 사용 하 는 것 이 좋 습 니 다. 
 
#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  dfs(int n){
 int deepson1,deepson2;
   if(T[n].son2&&T[n].son1){
    deepson1=dfs(T[n].son1)+1; //            ,  
    deepson2=dfs(T[n].son2)+1;//           ,  
    return deepson1>deepson2?deepson1:deepson2;
    }
   if(T[n].son1&&!T[n].son2)
      return dfs(T[n].son1)+1;
  if(!T[n].son1&&T[n].son2)
       return dfs(T[n].son2)+1;
   if(!T[n].son1&&!T[n].son1)
        return  1;
    return  0;
}
*/


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
",x,i); } else { T[x].son2=i; printf("T[%d].son2==%d
",x,i); } } //cout<

 
 
 
 

좋은 웹페이지 즐겨찾기