使用 Python 编写的程序,根据结构和值检查两棵树是否完全相同
pythonserver side programmingprogramming更新于 2026/2/4 16:12:17
假设我们有两棵二叉树,我们必须检查它们的结构和值是否完全相同。我们可以将它们称为孪生树。
因此,如果输入如下

那么第一对的输出为 True,第二对和第三对的输出为 false,因为第二项和第三项不同且结构不同。
为了解决这个问题,我们将遵循以下步骤 −
定义一个方法solve(),它将采用两个根
如果root0为null且root1为null,则
返回True
如果root0 为 null 或 root1 为 null,则
返回 False
如果 root0 的值与 root1 的值不同,则
返回 False
当solve(root0 的左边,root1 的左边)和solve(root0 的右边,root1 的右边)为 true 时返回 true,否则返回 false。
让我们看看下面的实现以便更好地理解 −
示例
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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

