题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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:
    def isBalanced(self, root: TreeNode) -> bool:
        def judge(node):
            if not node:
                return 0
            return 1 + max(judge(node.left), judge(node.right))
        if not root:
            return True
        else:
            left = judge(root.left)
            right = judge(root.right)
        return (left - right <= 1) and (left - right >= -1) and self.isBalanced(root.left) and self.isBalanced(root.right)

巴山夜雨
0 声望1 粉丝