简介:平衡二叉树是一种特殊的二叉树,其中任意节点的两个子树的高度差最多为1。本题要求判断给定的二叉树是否为平衡二叉树。
要判断一个二叉树是否为平衡二叉树,可以使用递归的方法。对于每个节点,我们比较其左右子树的高度。如果左右子树的高度差大于1,那么该节点所在的子树就不是平衡二叉树,整个二叉树也就不是平衡二叉树。如果所有节点都满足平衡条件,那么该二叉树就是平衡二叉树。
以下是使用Python实现的代码:
class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef isBalanced(root):if not root:return Trueheight = getHeight(root)if height == -1:return Falsereturn Truedef getHeight(root):if not root:return 0left_height = getHeight(root.left)if left_height == -1:return -1right_height = getHeight(root.right)if right_height == -1:return -1if abs(left_height - right_height) > 1:return -1return max(left_height, right_height) + 1
在上述代码中,我们首先定义了一个TreeNode类来表示二叉树的节点。然后,我们定义了isBalanced函数来判断给定的二叉树是否为平衡二叉树。如果根节点为空,则返回True;否则,我们调用getHeight函数来获取根节点的高度。如果高度为-1,表示根节点所在的子树不是平衡二叉树,因此整个二叉树也不是平衡二叉树,返回False;否则,返回True。getHeight函数用于计算给定节点的高度。如果节点为空,则高度为0。否则,我们递归计算左子树和右子树的高度,并判断它们之间的高度差是否大于1。如果大于1,则说明该节点所在的子树不是平衡二叉树,返回-1;否则,返回左右子树高度的最大值加1。
最后,我们在主程序中调用isBalanced函数来判断给定的二叉树是否为平衡二叉树,并输出结果。