思路:
一開始想著怎麼遍歷來找,想了一會找不到什麼思路,然後突然發現可以用遞迴來做
遞迴思路也很簡單:返回true的條件=左子樹為true+右子樹為true+左右子樹深度差不超過1
於是寫出**:
class然後讓我們分析一下這個是什麼遍歷,然後分析一下複雜度solution //
程式的出口是什麼
if(isbalanced(root.left)&&isbalanced(root.right))
}return
false
; }
public
intheight(treenode root)
return math.max(height(root.left),height(root.right))+1;}}
什麼順序遍歷看你的**怎麼寫
複雜度的話,我們很清楚的能看到,我們造成了很多重複計算
例如計算root的左右子樹高度差時,就需要計算左子樹的高度,在計算左子樹是否滿足要求時也要計算這些,有很多重複運算
那麼這個屬於從上往下,浪費了很多運算,如果從下往上,是否就可以不重複計算
class具體看這道題的解析solution
private
intrecur(treenode root)
}
感覺還是有點難想出來
劍指offer 55 II 平衡二叉樹
題目鏈結 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,nu...
劍指offer55 II 平衡二叉樹
題目 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。分析 平衡二叉樹 balance tree 的定義是 二叉樹中任意節點的左右子樹的深度相差不超過1。注意是任意節點,並不只是根節點的 左深度 右深度 還有其子樹也必須是平衡二叉樹。從該定義也可知是利用遞迴來解決這個問題。class soluti...
劍指 Offer 55 II 平衡二叉樹
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹 二叉樹中任意節點的左右子樹的深度相差不超過1,則是平衡二叉樹 回顧遞迴求深度的方案,是先求得左右子樹的深度,然後進一步得到當前節點的深度,即先左右子樹,再根節點 可以直接加入乙個全域性變數記錄當前是否平衡,並額外引入乙個邏輯來比較子樹的深度 bfs迭...