返回

寻找相同的树--算法题 leetcode 100 python

人工智能

前言

在计算机科学中,二叉树是一种广泛应用的数据结构。二叉树中的每个节点至多有两个子节点,分别称为左子节点和右子节点。

问题

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 上的其他挑战!