第乙個小題目是求二叉樹的深度的,前面做過很多二叉樹的題,這個就比較簡單了。
1class
solution
7int treedepth(treenode*proot)816
if (proot->right)
1720
return max(left,right)+1;21
22}23 };
第二個小題在第乙個題的基礎上也不難,主要是對於遞迴的掌握。
1class
solution 89
int treedepth(treenode*proot)
1020
bool isbalanced_solution(treenode*proot)
31 };
對於樹的題目,腦子裡不要想太複雜的東西,按照以下步驟做就好:
1.寫遞迴終結條件,一般是結點指標為空
2.把樹想象成最簡單只有3個結點的小樹,想想該怎麼計算
3.寫遞迴條件,讓它可以應對更複雜的樹
看到書上還有一種做法,因為之前要重複的遍歷結點計算是否為平衡二叉樹。所以用後序遍歷的方式遍歷每乙個結點,在遍歷結點之前已經遍歷了它的左右子樹。前一種方法用的是前序遍歷。
classsolution
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 田...