返回
寻找相同的树--算法题 leetcode 100 python
人工智能
2023-09-27 17:42:18
前言
在计算机科学中,二叉树是一种广泛应用的数据结构。二叉树中的每个节点至多有两个子节点,分别称为左子节点和右子节点。
问题
Leetcode 第 100 题要求我们判断两棵二叉树是否相同。两棵二叉树相同意味着它们具有相同的结构,并且每个节点的值也相同。
解决思路
为了判断两棵二叉树是否相同,我们可以采用前序遍历的方式遍历二叉树。前序遍历是指先访问根节点,然后访问左子树,最后访问右子树。当遇到空节点时,我们需要使用某种标记来表示,以便在对比两棵树时能够正确地进行比较。
Python 代码实现
def is_same_tree(p, q):
"""
判断两棵二叉树是否相同。
参数:
p: 第一棵二叉树的根节点。
q: 第二棵二叉树的根节点。
返回:
如果两棵树相同,则返回 True,否则返回 False。
"""
# 如果两棵树都为空,则它们相同。
if not p and not q:
return True
# 如果其中一棵树为空,另一棵树不为空,则它们不同。
if not p or not q:
return False
# 如果两棵树的根节点的值不同,则它们不同。
if p.val != q.val:
return False
# 如果两棵树的左子树不同,则它们不同。
if not is_same_tree(p.left, q.left):
return False
# 如果两棵树的右子树不同,则它们不同。
if not is_same_tree(p.right, q.right):
return False
# 如果两棵树的根节点的值相同,左子树和右子树也都相同,则它们相同。
return True
运行示例
# 创建两棵二叉树。
p = TreeNode(1)
p.left = TreeNode(2)
p.right = TreeNode(3)
q = TreeNode(1)
q.left = TreeNode(2)
q.right = TreeNode(3)
# 判断两棵二叉树是否相同。
result = is_same_tree(p, q)
# 打印结果。
print(result)
输出:
True
在这个示例中,两棵二叉树相同,因此函数返回 True。
扩展阅读
结语
Leetcode 第 100 题是一道经典的二叉树问题。通过这篇文章,我们学习了如何使用 Python 来判断两棵二叉树是否相同。我们还提供了清晰的步骤、示例和代码,帮助您更好地理解和掌握该问题。如果您对二叉树或算法题感兴趣,欢迎继续探索 Leetcode 上的其他挑战!