110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
# 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:
if not root:
return True
left = self.depth(root.left) #左边深度
right = self.depth(root.right)#右边深度
#根节点的深度差值小于2 、左边也要满足、右边同样;即三个条件同时满足
return abs(left-right)<=1 and self.isBalanced(root.left) and self.isBalanced(root.right)
def depth(self,node):#树的深度
if not node:
return 0
ldepth = self.depth(node.left)
rdepth = self.depth(node.right)
return 1 + max(ldepth,rdepth)