Python刷leetcode:110. 平衡二叉樹
阿新 • • 發佈:2019-01-31
給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過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
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ self.flag = True def maxDepth(root): if not root: return 0 lheight = maxDepth(root.left) rheight = maxDepth(root.right) if abs(lheight-rheight)>1: self.flag = False return max(lheight,rheight)+1 maxDepth(root) if self.flag == False: return False else: return True