问题描述
我的解法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
#取当前结点的高度。叶子节点为0,父节点是子结点高度的最大值+1
def getHeight(self,root:TreeNode)->int:
if root==None:
return 0
return max(self.getHeight(root.left),self.getHeight(root.right))+1
#依次判断每个结点是否平衡
def isBalanced(self, root: TreeNode) -> bool:
#空树认为平衡
if root==None:
return True
#左右子树高度之差小与或等于1则认为当前结点平衡。
if abs(self.getHeight(root.left)-self.getHeight(root.right))<=1:
#判断子结点是否也都平衡
if self.isBalanced(root.left) and self.isBalanced(root.right):
return True
return False
知识点:
1.通过先序遍历依次判断每一个点是否平衡。
2.注意考虑空树。