劍指offer系列31 二叉樹的深度

2022-04-03 02:22:14 字數 927 閱讀 5513

第乙個小題目是求二叉樹的深度的,前面做過很多二叉樹的題,這個就比較簡單了。

1

class

solution

7int treedepth(treenode*proot)816

if (proot->right)

1720

return max(left,right)+1;21

22}23 };

第二個小題在第乙個題的基礎上也不難,主要是對於遞迴的掌握。

1

class

solution 89

int treedepth(treenode*proot)

1020

bool isbalanced_solution(treenode*proot)

31 };

對於樹的題目,腦子裡不要想太複雜的東西,按照以下步驟做就好:

1.寫遞迴終結條件,一般是結點指標為空

2.把樹想象成最簡單只有3個結點的小樹,想想該怎麼計算

3.寫遞迴條件,讓它可以應對更複雜的樹

看到書上還有一種做法,因為之前要重複的遍歷結點計算是否為平衡二叉樹。所以用後序遍歷的方式遍歷每乙個結點,在遍歷結點之前已經遍歷了它的左右子樹。前一種方法用的是前序遍歷。

class

solution

int left=0, right=0;//

分別為左右子樹的深度

if (isbalanced_solution(proot->left,&left) && isbalanced_solution(proot->right,&right))

}return

false

; }

bool isbalanced_solution(treenode*proot)

};

劍指offer系列 二叉樹的深度

題目描述 輸入一棵二叉樹,求其深度 樹的深度定義為 從根節點到葉子節點的路徑長度的最大值 示例 分析 對每個節點而言,以該節點為根節點的樹的深度為左子樹和右子樹深度的較大值加1.因此用遞迴可以很容易的實現 int depth treenode root 分析 同樣可以用遞迴來實現。為了使每個節點只遍...

劍指offer 二叉樹 二叉樹搜尋樹

package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...

劍指offer 二叉樹 二叉樹的映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 51,交換左右子樹 2,遞迴交換左右子樹的左右子節點 package offertest title mirror description author 田...