class Solution:
def isBalanced(self, root):
if root is None:
return True
return self.helper(root) != -1
def helper(self, root):
if root is None:
return 0
# 后续遍历 用的真神奇
left = self.helper(root.left)
right = self.helper(root.right)
# 判断 如果有一边(左或者是右)出现了-1, 就是不平衡, 那么整棵树就不是
# 平衡得, 所以直接返回就可以了
if left == -1 or right == -1 or abs(left - right) > 1:
return -1
# 如果没有出现-1, 那么说明两边都是平衡的, 那么返回最大的深度, 就是不平衡
# 左右两边较大的深度 在加上1
return max(left, right) + 1
leetcode110 Balanced Binary Tree
最新推荐文章于 2018-12-26 22:25:37 发布