目錄
一、題目內容
二、解題思路
三、**
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為:
乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。
示例 1:給定二叉樹 [3,9,20,null,null,15,7]
3
/ \9 20
/ \
15 7
返回 true 。
示例 2:記錄左右子樹的深度,葉節點深度為1,如果累計高度差大於1,則返回小於0的數(這裡取-1)。給定二叉樹 [1,2,2,3,3,null,null,4,4]
1
/ \2 2
/ \3 3
/ \4 4
若兩棵子樹有乙個或兩個返回負值,則其父親也為負。
最後檢驗root的高度,小於0則false,大於等於0為true。
# definition for a binary tree node.
class treenode:
def __init__(self, x):
self.val = x
self.left = none
self.right = none
class solution:
def isbalanced(self, root: treenode) -> bool:
def dfs(root):
if root is none:
return 0
lh = dfs(root.left)
rh = dfs(root.right)
if lh >= 0 and rh >= 0 and abs(lh - rh) <= 1:
return 1 + max(lh, rh)
else:
return -1
return dfs(root) >= 0
if __name__ == '__main__':
a = treenode(3)
a.left = treenode(9)
a.right = treenode(20)
a.right.left = treenode(15)
a.right.right = treenode(7)
s = solution()
ans = s.isbalanced(a)
print(ans)
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...