📅  最后修改于: 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
的函数,这个函数的作用是比较两棵树是否相同。这个函数有两个参数:node1
和node2
,表示需要比较的两棵树的根节点。
在函数的实现中,我们首先判断两棵树是否都为空。如果都为空,那么它们是相同的。如果有一棵树为空,而另一棵不为空,那么它们一定不相同。
接着,我们比较两棵树的根节点的值。如果它们的值不同,那么这两棵树一定不相同。
最后,我们递归地比较两棵树的左子树和右子树。如果它们的左子树和右子树也相同,那么这两棵树就是相同的。
在实际使用中,我们可以通过调用isSameTree
函数来比较两棵树是否相同。下面是一个示例:
tree1 = TreeNode(1, TreeNode(2), TreeNode(3))
tree2 = TreeNode(1, TreeNode(2), TreeNode(3))
print(isSameTree(tree1, tree2))
# 输出:True
上述代码中,我们定义了两棵相同的二叉树,并调用isSameTree
函数进行比较。由于它们是相同的,所以调用结果为True
。
总的来说,以上示例展示了如何实现判断两棵树是否相同的功能。具体实现过程中,需要注意节点值和子节点的比较。