問題描述:
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過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。遞迴遍歷每乙個節點。
1class
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
變體:
1class
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...