java 求二叉樹的深度 / 節點總數

1.判斷根節點是否爲空

2.遞歸獲取左子樹的深度

3.遞歸獲取右子樹的深度

  1. public int hight(Node node){  
  2.         if(node==null){  
  3.             return 0;  
  4.         }else{  
  5.             int i=hight(node.getLeftChild());  
  6.             int j=hight(node.getRightChild());  
  7.             return (i<j)?(j+1):(i+1);  
  8.         }  
  9.     }  



講一下這裏的遞歸原理:當遍歷到CE時,左子樹node.getLeftChild()和右子樹node.getRightChild()返回0+1,此時深度爲1,當到BD時,BD的深度都爲1,此時返回1+1=2,同理,一步一步往回退,直到左右子樹遍歷一遍得到左右子樹的深度然後進行比較返回最大的值+1就是整棵樹的深度。

那麼求二叉樹的所有節點的個數,遞歸原理與此相同。


求二叉樹節點總數:

求二叉樹的節點數:返回左子樹和右子樹個數的和,然後加上一個根節點

  1. public int sumNode(Node node){  
  2.         if(node==null){  
  3.             return 0;  
  4.         }else{  
  5.             int a=sumNode(node.getLeftChild());  
  6.             int b=sumNode(node.getRightChild());  
  7.             return 1+a+b;  
  8.         }  
  9.     } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章