樹 2 平衡二叉樹 T 110

2021-10-06 20:14:11 字數 1659 閱讀 2797

題解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...