题目描述
实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。
给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。
思路
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Balance:
def isBalance(self, root):
# 如果左子数和又子数的深度差大于1,则False
# 否则判断左子树和右子树是否为True
if root == None:
return True
if abs(self.height(root.left)-self.height(root.right)) > 1:
return False
else:
return self.isBalance(root.left) and self.isBalance(root.right)
def height(self, root):
# 求子树高度,若为None则返回0,否则 max(左子树,右子树)+1
if root == None:
return 0
else:
return max(self.height(root.left), self.height(root.right))+1