Balanced Binary Tree
-LeetCode题目:
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
分析:
这道题目是判断平衡二叉树的。
我们可以看到,平衡二叉树
是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
通过递归,我们来通过判断左右子树的高度差是否大于1来判断这棵子树是否是平衡二叉树,最终能判断整个树是否是平衡二叉树。
代码:
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param root, a tree node
# @return a boolean
def isBalanced(self, root):
if not root:
return True
if abs(self.height(root.left)-self.height(root.right))>1:
return False
else:
return self.isBalanced(root.left) and self.isBalanced(root.right)
# calculate the height of tree
def height(self,root):
if root == None:
return 0
return 1+max(self.height(root.left),self.height(root.right))