返回

技术指南:轻松掌握路飞的力扣题110:平衡二叉树

前端

导读

平衡二叉树是一种特殊的二叉树,其中每个节点的左右子树的高度差至多为1。平衡二叉树在数据结构中经常被使用,因为它可以有效地进行搜索和插入操作。

力扣题110:平衡二叉树

力扣题110:平衡二叉树是一道经典的程序员必刷题。这道题要求判断给定的二叉树是否是一棵平衡二叉树。

解决方案

本节将介绍一个简洁、高效的解决方案,帮助您解决力扣题110。

  1. 定义递归函数

首先,我们需要定义一个递归函数来判断二叉树是否平衡。这个函数接收二叉树的根节点作为参数,并返回一个布尔值,指示这棵二叉树是否平衡。

  1. 计算树的高度

在递归函数中,我们需要计算二叉树的高度。我们可以使用以下代码来计算二叉树的高度:

def height(root):
  if root is None:
    return 0
  else:
    return max(height(root.left), height(root.right)) + 1
  1. 检查平衡性

在计算了二叉树的高度之后,我们需要检查二叉树是否平衡。我们可以使用以下代码来检查二叉树是否平衡:

def is_balanced(root):
  if root is None:
    return True
  else:
    left_height = height(root.left)
    right_height = height(root.right)
    return abs(left_height - right_height) <= 1 and is_balanced(root.left) and is_balanced(root.right)

代码示例

以下代码是力扣题110的完整解决方案:

def height(root):
  if root is None:
    return 0
  else:
    return max(height(root.left), height(root.right)) + 1

def is_balanced(root):
  if root is None:
    return True
  else:
    left_height = height(root.left)
    right_height = height(root.right)
    return abs(left_height - right_height) <= 1 and is_balanced(root.left) and is_balanced(root.right)

# 测试用例
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

print(is_balanced(root))  # 输出:True

总结

在本技术指南中,我们介绍了力扣题110:平衡二叉树的解决方案。我们从定义递归函数开始,然后计算二叉树的高度,最后检查二叉树是否平衡。我们还提供了一个完整的代码示例,以帮助您更好地理解如何解决这个问题。希望本指南对您有所帮助。