Python程序:检查两棵树的结构和值是否完全相同
假设我们有两棵二叉树,我们需要检查它们在结构和值方面是否完全相同。我们可以称它们为孪生树。
因此,如果输入如下所示:
则第一对的输出将为 True,第二对和第三对的输出将为 False,因为第二对的某些值不同,而第三对的结构不同。
为了解决这个问题,我们将遵循以下步骤:
定义一个名为 solve() 的方法,该方法将接收两个根节点。
如果 root0 为空且 root1 为空,则
返回 True
如果 root0 为空或 root1 为空,则
返回 False
如果 root0 的值与 root1 的值不同,则
返回 False
当 solve(root0 的左子树, root1 的左子树) 和 solve(root0 的右子树, root1 的右子树) 都为真时返回真,否则返回假。
让我们看看下面的实现,以便更好地理解:
示例
class TreeNode: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def solve(self, root0, root1): if not root0 and not root1: return True if not root0 or not root1: return False if root0.val != root1.val: return False return self.solve(root0.left, root1.left) and self.solve(root0.right, root1.right) ob = Solution() root1 = TreeNode(10) root1.left = TreeNode(5) root1.right = TreeNode(15) root1.left.left = TreeNode(3) root1.left.right = TreeNode(8) root2 = TreeNode(10) root2.left = TreeNode(5) root2.right = TreeNode(15) root2.left.left = TreeNode(3) root2.left.right = TreeNode(8) print(ob.solve(root1, root2))
输入
root1 = TreeNode(10) root1.left = TreeNode(5) root1.right = TreeNode(15) root1.left.left = TreeNode(3) root1.left.right = TreeNode(8) root2 = TreeNode(10) root2.left = TreeNode(5) root2.right = TreeNode(15) root2.left.left = TreeNode(3) root2.left.right = TreeNode(8)
输出
True
广告