返回

力扣第 110 题:平衡二叉树的判别指南,小白也能读懂!

后端

平衡二叉树的概念

在计算机科学中,平衡二叉树是一种数据结构,它通过限制子树的高度差来维持二叉树的平衡性。平衡二叉树的定义是:对于任意一个节点,其左右子树的高度差至多为 1。高度差是指子树的最大深度与最小深度的差值。

平衡二叉树具有较高的检索效率,并且在插入和删除操作中能够保持较好的平衡性。因此,平衡二叉树广泛应用于数据库、文件系统、编译器等领域。

平衡二叉树的判定方法

判断给定二叉树是否为平衡二叉树,可以通过以下步骤:

  1. 计算每个节点的高度。节点的高度定义为从该节点到叶节点的最长路径上的节点数目。
  2. 对于每个节点,计算其左右子树的高度差。
  3. 如果所有节点的高度差都小于或等于 1,则该二叉树为平衡二叉树;否则,该二叉树不是平衡二叉树。

代码实现

def is_balanced(root):
  """
  判断给定二叉树是否为平衡二叉树。

  参数:
    root:二叉树的根节点。

  返回:
    如果二叉树是平衡的,返回 True;否则,返回 False。
  """

  if root is None:
    return True

  # 计算左子树和右子树的高度。
  left_height = get_height(root.left)
  right_height = get_height(root.right)

  # 计算左右子树的高度差。
  height_diff = abs(left_height - right_height)

  # 检查左右子树是否都是平衡二叉树。
  if not is_balanced(root.left) or not is_balanced(root.right):
    return False

  # 如果左右子树都是平衡二叉树并且高度差小于或等于 1,则该二叉树是平衡的。
  if height_diff <= 1:
    return True
  else:
    return False


def get_height(root):
  """
  计算给定二叉树的高度。

  参数:
    root:二叉树的根节点。

  返回:
    二叉树的高度。
  """

  if root is None:
    return 0

  # 计算左子树和右子树的高度。
  left_height = get_height(root.left)
  right_height = get_height(root.right)

  # 返回二叉树的高度。
  return max(left_height, right_height) + 1

结语

平衡二叉树是数据结构中的一种重要概念,它具有较高的检索效率和良好的平衡性。通过理解平衡二叉树的定义、判定方法和代码实现,我们可以更好地掌握该算法的原理和应用。