题目描述:
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
求二叉树的深度的代码:
class Solution:
def TreeDepth(self, pRoot):
if not pRoot:
return 0
left = self.TreeDepth(pRoot.left)
right = self.TreeDepth(pRoot.right)
return left + 1 if left > right else right + 1
可对借鉴上述代码进行部分修改来解决判断该二叉树是否是平衡二叉树的问题。
python代码:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def IsBalanced_Solution(self, pRoot):
self.flag = True
self.If_bTree(pRoot)
return self.flag
def If_bTree(self, pRoot):
if not pRoot:
return 0
left = self.If_bTree(pRoot.left)
right = self.If_bTree(pRoot.right)
#判断左右两个子树的高度差的绝对值是否大于1
if abs(left - right) > 1:
self.flag = False
return left + 1 if left > right else right + 1