题目:
输入一棵二叉树的根结点,判断该树是不是平衡二叉树。
如果某二叉树中任意结点的左右子树的深度相差不超过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.isBalanced = True
if not root:
return True
self.treeDepth(root)
return self.isBalanced
def treeDepth(self, root):
if not root:
return 0
left = self.treeDepth(root.left)
right = self.treeDepth(root.right)
if left - right > 1 or right - left > 1:
self.isBalanced = False
return max(left + 1, right + 1)