# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class ResType:
def __init__(self, x, isBalanced):
self.deep = x
self.isBalanced = isBalanced
class Solution:
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.treeDeepth(root).isBalanced
def treeDeepth(self,root):
if root == None:
return ResType(0,True)
left = self.treeDeepth(root.left)
right = self.treeDeepth(root.right)
if abs(left.deep-right.deep) >1:
return ResType(max(left.deep,right.deep)+1,False)
else:
return ResType(max(left.deep,right.deep)+1,left.isBalanced & right.isBalanced)