返回
技术指南:轻松掌握路飞的力扣题110:平衡二叉树
前端
2023-10-01 02:43:52
导读
平衡二叉树是一种特殊的二叉树,其中每个节点的左右子树的高度差至多为1。平衡二叉树在数据结构中经常被使用,因为它可以有效地进行搜索和插入操作。
力扣题110:平衡二叉树
力扣题110:平衡二叉树是一道经典的程序员必刷题。这道题要求判断给定的二叉树是否是一棵平衡二叉树。
解决方案
本节将介绍一个简洁、高效的解决方案,帮助您解决力扣题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)
代码示例
以下代码是力扣题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:平衡二叉树的解决方案。我们从定义递归函数开始,然后计算二叉树的高度,最后检查二叉树是否平衡。我们还提供了一个完整的代码示例,以帮助您更好地理解如何解决这个问题。希望本指南对您有所帮助。