用 Python 编写程序检查一棵树是否是另一棵树的子树
pythonserver side programmingprogramming更新于 2026/2/4 3:24:17
假设我们有两棵二叉树。我们必须检查第二棵树是否是第一棵树的子树。
因此,如果输入如下

则输出将为 True。
为了解决这个问题,我们将遵循以下步骤 −
定义一个函数solve()。这将获取 root、target
如果 root 为 null 且 target 也为 null,则
返回 True
如果 root 为 null 或 target 为 null,则
返回 False
如果 root 的值与 target 的值相同,则
返回 resolve(root 的左侧,target 的左侧) 和 resolve(root 的右侧,target 的右侧)
否则,
返回 resolve(root 的左侧,target) 或 resolve(root 的右侧,target)
让我们看看下面的实现以便更好地理解 −
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, root, target): if root == None and target == None: return True if root == None or target == None: return False if root.val == target.val: return self.solve(root.left, target.left) and self.solve(root.right, target.right) else: return self.solve(root.left, target) or self.solve(root.right, target) ob = Solution() root1 = TreeNode(6) root1.left = TreeNode(4) root1.right = TreeNode(10) root1.left.left = TreeNode(3) root1.left.right = TreeNode(5) root2 = TreeNode(4) root2.left = TreeNode(3) root2.right = TreeNode(5) print(ob.solve(root1, root2))
输入
root1 = TreeNode(6) root1.left = TreeNode(4) root1.right = TreeNode(10) root1.left.left = TreeNode(3) root1.left.right = TreeNode(5) root2 = TreeNode(4) root2.left = TreeNode(3) root2.right = TreeNode(5)
输出
True
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

