给出一个计算二叉树深度的算法在线等 急 高手

解决方案 »

  1.   


        //主调函数
    void   Btree ::num()                    
    { int m=0;                                    
    m=depth( root );                          
    cout<<”\n   num=” <<m;                       
    }   // insert
    ­
    //利用中序遍历方法,或者先序、后序均可以
    int   Btree ::depth ( bnode *p )                
    {   if ( p!=NULL)
         { nl=inordern( p->lch,n);  
           nr=inordern( p->rch, n);                
           if ( nl<nr)   nr++;      
           else nl++;                            
    }  
    if(nl>nr)
         return   nl;
       else
         return   nr;      
    }  
      

  2.   


    typedef struct tree//二叉树的定义 
    { char data; struct tree *lchild,*rchild; }TREE,*Tree; void create(Tree t)//创建一棵二叉树 
    { char ch; scanf("%c",&ch); if(ch=='#') t=NULL; 
    else { t->data=ch; create(t->lchild); create(t->rchild); } 

    int deep(Tree t)//深度算法 
    { if(!t) return 0; else { ld=deep(t->lchild); rd=deep(t->rchild); 
    if(ld>rd) return rd+1; else return ld+1; 

    void main()//主函数 
    { Tree t; create(t); printf("%d\n",deep(t)); }