📌  相关文章
📜  检查两棵树是否具有相同的结构(1)

📅  最后修改于: 2023-12-03 14:55:44.111000             🧑  作者: Mango

检查两棵树是否具有相同的结构

在树的相关问题中,有很多问题需要比较两棵树是否具有相同的结构。在本文中,我们将介绍如何检查两棵树是否具有相同的结构。

问题描述

给定两棵二叉树,判断它们是否具有相同的结构,即对应的节点是否具有相同的子树。

解决方案

我们可以通过递归来检查两棵树是否具有相同的结构。具体思路如下:

  1. 如果两棵树都为空,那么它们具有相同的结构,返回 true。
  2. 如果只有一棵树为空,那么它们的结构不同,返回 false。
  3. 如果根节点的值不同,那么它们的结构不同,返回 false。
  4. 递归判断左子树是否相同和右子树是否相同,如果都相同,那么它们具有相同的结构,否则不具有相同的结构。

以下是实现该算法的 Python 代码片段:

def isSameTree(p, q):
    if not p and not q:
        return True
    if not p or not q:
        return False
    if p.val != q.val:
        return False
    return isSameTree(p.left, q.left) and isSameTree(p.right, q.right)

以上代码中,我们首先判断两棵树是否为空或者只有一棵树为空,如果是,则它们的结构不同,返回 false。然后判断根节点的值是否相同,如果不同,则它们的结构不同,返回 false。最后,递归判断左子树和右子树是否相同,如果都相同,那么它们具有相同的结构,返回 true。

总结

本文介绍了如何检查两棵树是否具有相同的结构,通过递归来判断它们是否具有相同的子树。这是树相关问题中非常常见的问题之一,理解该算法对于深入理解树的相关算法至关重要。