1 题目
简单题
2 思想
深搜判断一棵二叉树是否是平衡二叉树,平衡二叉树需要满足的条件是:左子树是平衡树,右子树是平衡树,且左子树-右子树高度 < 2,那么该树就是一棵平衡树
3 代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
res,hight = self.dfs(root)
return res
# 深搜判断一棵树是否是平衡二叉树
# 返回是否是平衡树的标识以及树高
def dfs(self,root):
if root is None:
return (True,0)
# 递归判断是否是平衡树,以及求树高
left_avg, left_hight = self.dfs(root.left)
right_avg,right_hight = self.dfs(root.right)
if (left_avg and right_avg and abs(left_hight- right_hight)<2):
return (True,max(left_hight,right_hight)+1)
return (False,max(left_hight,right_hight)+1)