題解1:
# 與自己思路相似的一種解法
defisbalanced
(self, root: treenode)
->
bool:if
not root:
return
true
left_result=self.isbalanced(root.left)
right_result = self.isbalanced(root.right)
result = left_result and right_result
return result and
abs(self.max_depth(root.left)
-self.max_depth(root.right)
)<=
1def
max_depth
(self,node)
:return
max(self.max_depth(node.left)+1
,self.max_depth(node.right)+1
)if node else
0
題解2:
# 一種較優的解法
defisbalanced
(self, root: treenode)
->
bool
:return self.recur(root)!=-
1def
recur
(self, root):if
not root:
return
0 left = self.recur(root.left)
if left ==-1
:return-1
right = self.recur(root.right)
if right ==-1
:return-1
return
max(left, right)+1
ifabs
(left - right)
<
2else
-1
1、
第一種方法比較容易想到,利用遞迴的方法,求得當前左右子樹的最大深度,並進行比較,判斷是否是平衡樹
2、
緊抓平衡樹的判定條件——絕對值不超過1。從底至頂返回子樹最大高度,當判斷其深度超過1時,便提前結束。
3、
絕對值求法。
(1) abs() 。 內建函式,可求複數
(2) math.fabs() 。math模組定義,使用與float和integer 。
(二叉樹)110 平衡二叉樹
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,null,4,4 返回 false 若...
110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,n...
110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回 true 思路 注釋 private boolean isbala...