跳到主要内容

求两棵树是否相同?

参考答案:

要判断两棵树是否相同,我们需要先定义"相同"的含义。如果我们谈论的是两棵完全相同的树,包括它们的结构、节点和边的数量、以及每个节点上的值,那么我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)等图遍历算法来比较两棵树。

以下是一个使用深度优先搜索(DFS)的Python示例,用于比较两棵二叉树是否相同:

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

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

在这个示例中,isSameTree函数首先检查两棵树是否都为空。如果都是,则它们是相同的。然后,它检查其中一棵树是否为空而另一棵不是,如果是,则它们不相同。接着,它检查两棵树的根节点的值是否相同,如果不同,则它们不相同。最后,它递归地检查两棵树的左子树和右子树是否相同。

注意,这个示例只适用于二叉树。对于其他类型的树(如N叉树),你可能需要修改比较逻辑以处理多个子节点。

如果你谈论的是两棵树的拓扑结构是否相同(即它们是否是同构的),而不考虑节点上的值,那么你需要使用更复杂的算法,如树的哈希或树的规范化。这些算法通常涉及将树转换为某种形式的规范表示,然后比较这些表示是否相同。