1.判斷根節點是否爲空
2.遞歸獲取左子樹的深度
3.遞歸獲取右子樹的深度
- public int hight(Node node){
- if(node==null){
- return 0;
- }else{
- int i=hight(node.getLeftChild());
- int j=hight(node.getRightChild());
- return (i<j)?(j+1):(i+1);
- }
- }
講一下這裏的遞歸原理:當遍歷到C和E時,左子樹node.getLeftChild()和右子樹node.getRightChild()返回0+1,此時深度爲1,當到B和D時,B和D的深度都爲1,此時返回1+1=2,同理,一步一步往回退,直到左右子樹遍歷一遍得到左右子樹的深度然後進行比較返回最大的值+1就是整棵樹的深度。
那麼求二叉樹的所有節點的個數,遞歸原理與此相同。
求二叉樹節點總數:
求二叉樹的節點數:返回左子樹和右子樹個數的和,然後加上一個根節點
- public int sumNode(Node node){
- if(node==null){
- return 0;
- }else{
- int a=sumNode(node.getLeftChild());
- int b=sumNode(node.getRightChild());
- return 1+a+b;
- }
- }