树 递归 数叶子 求深度

 

Code:
  1. void Pre_Order_Traverse(BitTree T)  
  2. {if(T)  
  3.     {cout<<T->data;      
  4.      Pre_Order_Traverse(T->lchild);  
  5.      Pre_Order_Traverse(T->rchild);     
  6.      }  
  7. }  
  8. void In_Order_Traverse(BitTree T)  
  9. {if(T)  
  10.     {  
  11.      In_Order_Traverse(T->lchild);  
  12.      cout<<T->data;      
  13.      In_Order_Traverse(T->rchild);  
  14. }  
  15. }  

 

Code:
  1. void Leaf_Count(BitTree T)  
  2. {if(T)  
  3.  {if(!(T->lchild)&&!(T->rchild))  
  4.     n++;  
  5. Leaf_Count(T->lchild);  
  6. Leaf_Count(T->rchild);  
  7. }  
  8. }  
  9. int Leaf_Count2(BitTree T)//方法2  
  10. {int n,m;  
  11. if(!T)return 0;  
  12.  {if(!(T->lchild)&&!(T->rchild))return 1;  
  13.  else {m=Leaf_Count2(T->lchild);  
  14.        n=Leaf_Count2(T->rchild);  
  15.        return m+n;}  
  16.   }  
  17. }  
  18. int Leaf_Count3(BitTree T)//方法3  
  19. {int n,m,sum=0;  
  20. if(T)  
  21. {if(!(T->lchild)&&!(T->rchild))sum++;  
  22.        m=Leaf_Count2(T->lchild);  
  23.        n=Leaf_Count2(T->rchild);  
  24.        sum=m+n;  
  25.     }  
  26.  return sum;  
  27. }  
  28. int High_Tree(BitTree T)  
  29. {int h,h1,h2;  
  30.     if(!T)h=0;  
  31.     else  
  32.     {h1=High_Tree(T->lchild);  
  33.      h2=High_Tree(T->rchild);  
  34.      h=max(h1,h2)+1;  
  35.     }  
  36.     return h;  
  37. }  

 

你可能感兴趣的:(tree)