题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解法1:
如果左右子树相差超过1,即不是平衡二叉树,下面的写法略显复杂,因为把False还有层数混合返回。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def IsBalanced_Solution(self, pRoot):
# write code here
if not pRoot:return False
return self.judgeTree(pRoot)
def judgeTree(self,pRoot):
if not pRoot:return 0
left = self.judgeTree(pRoot.left)
if left is False: return False
right = self.judgeTree(pRoot.right)
if right is False or abs(left - right)>1: return False
return max(left, right) + 1
解法二:
class Solution:
def IsBalanced_Solution(self, pRoot):
# write code here
if not pRoot: return True
return True if self.judgeTree(pRoot,1 ) else False
def judgeTree(self,preNode,preDeep):
if not preNode:
return preDeep
rightDeep =self.judgeTree(preNode.right,preDeep+1)
leftDeep =self.judgeTree(preNode.left,preDeep+1)
if rightDeep is False or leftDeep is False or abs(rightDeep -leftDeep)>1:
return False
return max(rightDeep,leftDeep)