📜  如何确定二叉树是否高度平衡?(1)

📅  最后修改于: 2023-12-03 15:24:52.905000             🧑  作者: Mango

如何确定二叉树是否高度平衡?

简介

二叉树是计算机科学中的基本数据结构之一,是一种非常常见的数据结构,用于存储有层级关系的数据。在很多应用中,判断二叉树是否是高度平衡的二叉树是非常有意义的,因为它可以帮助我们优化树的操作,提高效率。

什么是高度平衡的二叉树?

高度平衡的二叉树,是一颗满足以下条件的二叉树:

  • 它的左右子树的高度差不超过1。
  • 它的左右子树也都是高度平衡的二叉树。
如何判断二叉树是否高度平衡?

我们可以基于递归来判断一棵二叉树是否是高度平衡的二叉树。具体来说,可以按照以下步骤来实现:

  • 如果二叉树为空,那么它一定是高度平衡的二叉树,直接返回 True
  • 否则,如果二叉树的左右子树的高度差超过1,那么它一定不是高度平衡的二叉树,直接返回 False
  • 否则,递归地检查它的左右子树是否都是高度平衡的二叉树。
代码实现

基于以上思路,我们可以实现以下 Python 代码:

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def isBalanced(self, root: TreeNode) -> bool:
        if not root:
            return True
        left_height = self.get_height(root.left)
        right_height = self.get_height(root.right)
        if abs(left_height - right_height) > 1:
            return False
        return self.isBalanced(root.left) and self.isBalanced(root.right)
        
    def get_height(self, node: TreeNode) -> int:
        if not node:
            return 0
        return 1 + max(self.get_height(node.left), self.get_height(node.right))
总结

判断一棵二叉树是否是高度平衡的二叉树,是一道比较经典的算法题,有着非常广泛的应用。基于递归的思想,我们可以实现非常简单的算法,并且可以轻松地扩展到其他的问题上。掌握这一算法,对于程序员来说是非常有帮助的。