题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题目链接
平衡二叉树的性质
- 它是一棵空树或者它的左右子树的高度差的绝对值不超过1.并且 它的左右子树仍然是一棵平衡二叉树
解题思路
这里采用解法与求解二叉树的深度类似。只是增加了一个全局变量,每递归回来一层就判断一次左右子树是否满足要求。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.flag = True
def IsBalanced_Solution(self, pRoot):
# write code here
self.isBalanced(pRoot)
return self.flag
def isBalanced(self,pRoot):
if pRoot is None:return 0
left = self.isBalanced(pRoot.left)
right = self.isBalanced(pRoot.right)
diff = right - left
if diff > 1 or diff < -1:
self.flag = False
return left+1 if left >= right else right+1
判断二叉树是否平衡
本文探讨了如何判断一棵二叉树是否为平衡二叉树,即左右子树的高度差不超过1,且左右子树也必须是平衡的。通过递归方式计算二叉树深度并检查平衡性。
530

被折叠的 条评论
为什么被折叠?



