題目
二叉樹的深度
// treeNode 當前節點, length 當前節點的深度
public int getLength(TreeNode treeNode,int length){
if (treeNode==null){
return length;
}
int leftLength = getLength(treeNode.left,length);
int rightLength = getLength(treeNode.right,length);
length = leftLength > rightLength ? leftLength + 1 : rightLength + 1;
return length;
}
該方法爲通用方法只要知道當前節點的節點實例,與當前深度,就可以取得該節點下最深分支的深度,如果當前深度爲0,也就是根節點的時候,返回值就是該樹的深度.
引申
求二叉樹是否爲高度平衡的平衡二叉樹(左右兩個分支的深度差的絕對值不超過1)
思路:
求出兩個左右節點,分別求深度,取差的絕對值即可判斷
擴展
這種求法實際上是裝飾者模式的變形的使用,每深入探測一個節點,就在length上加一(裝飾);
如果在TreeNode中定義深度變量,則就會更明顯的展示裝飾者模式的思路