0
点赞
收藏
分享

微信扫一扫

【LeetCode】110. 平衡二叉树


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)


举报

相关推荐

0 条评论