📌  相关文章
📜  数据结构示例-判断两棵树是否相同(1)

📅  最后修改于: 2023-12-03 15:40:01.782000             🧑  作者: Mango

数据结构示例-判断两棵树是否相同

在计算机科学中,树是一种重要的数据结构,它在很多问题中都有广泛的应用。当需要比较两棵树是否相同时,我们需要编写一个函数来实现这个功能。这个函数比较两棵树的节点值,以及它们的子节点。如果所有节点值和子节点都相同,那么这两棵树就是相同的。

以下是一个示例程序,展示了如何实现比较两棵树是否相同的功能:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
        
def isSameTree(node1: TreeNode, node2: TreeNode) -> bool:
    if node1 is None and node2 is None:
        return True
    
    if node1 is None or node2 is None:
        return False
    
    if node1.val != node2.val:
        return False
    
    return isSameTree(node1.left, node2.left) and isSameTree(node1.right, node2.right)

上述代码中,我们首先定义了一个名为TreeNode的类,用于表示二叉树的节点。它有三个类变量:val表示节点的值,left表示节点的左子节点,right表示节点的右子节点。

接着定义了一个名为isSameTree的函数,这个函数的作用是比较两棵树是否相同。这个函数有两个参数:node1node2,表示需要比较的两棵树的根节点。

在函数的实现中,我们首先判断两棵树是否都为空。如果都为空,那么它们是相同的。如果有一棵树为空,而另一棵不为空,那么它们一定不相同。

接着,我们比较两棵树的根节点的值。如果它们的值不同,那么这两棵树一定不相同。

最后,我们递归地比较两棵树的左子树和右子树。如果它们的左子树和右子树也相同,那么这两棵树就是相同的。

在实际使用中,我们可以通过调用isSameTree函数来比较两棵树是否相同。下面是一个示例:

tree1 = TreeNode(1, TreeNode(2), TreeNode(3))
tree2 = TreeNode(1, TreeNode(2), TreeNode(3))
print(isSameTree(tree1, tree2))
# 输出:True

上述代码中,我们定义了两棵相同的二叉树,并调用isSameTree函数进行比较。由于它们是相同的,所以调用结果为True

总的来说,以上示例展示了如何实现判断两棵树是否相同的功能。具体实现过程中,需要注意节点值和子节点的比较。