LeetCode 110 平衡二叉樹

2022-06-13 18:00:16 字數 1833 閱讀 9114

問題描述:

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹[3,9,20,null,null,15,7]

3

/ \9 20

/ \

15 7

返回true

示例 2:

給定二叉樹[1,2,2,3,3,null,null,4,4]

1

/ \2 2

/ \3 3

/ \4 4

返回false

方法1:

通過求子樹深度來求子樹是否balance。left - right > 1 return false。遞迴遍歷每乙個節點。

1

class

solution(object):

2def

isbalanced(self, root):

3"""

4:type root: treenode

5:rtype: bool

6"""

7if root ==none:

8return

true

9 left =self.getdepth(root.left)

10 right =self.getdepth(root.right)

11if abs(left - right) > 1:

12return

false

13return self.isbalanced(root.left) and

self.isbalanced(root.right)

14def

getdepth(self,root):

15if root ==none:

16return

017 left =self.getdepth(root.left)

18 right =self.getdepth(root.right)

19return max(left,right) + 1

變體:

1

class

solution(object):

2def

isbalanced(self, root):

3"""

4:type root: treenode

5:rtype: bool

6"""

7def

deep(root):8if

notroot:

9return

010 l =deep(root.left)

11 r =deep(root.right)

12if abs(l-r)>1:

13 self.flag =false

14return max(l,r)+1

1516 self.flag=true

17deep(root)

18if self.flag ==false:

19return

false

20else:21

return true

2018-09-09 18:24:35 

leetcode 110 平衡二叉樹 平衡二叉樹

leetcode 110 平衡二叉樹 平衡二叉樹要求所有節點的左右子樹的高度差小於1,因此,只需在遍歷的時候返回其左右子樹的深度。definition for a binary tree node.public class treenode treenode int val treenode int...

LeetCode110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...

LeetCode 110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...