📅  最后修改于: 2023-12-03 15:26:44.554000             🧑  作者: Mango
本文将介绍如何检查一棵二叉树是否是另一棵二叉树的子树。我们将使用递归算法来解决这个问题。
我们将从根节点开始比较两棵树的每个节点。如果两个节点的值相同,则我们比较它们的左右子树是否相同。如果相同,则这棵树是另一棵树的子树,否则我们继续比较左右子树。
代码如下:
def is_subtree(s, t):
if not s:
return False
if is_same_tree(s, t):
return True
return is_subtree(s.left, t) or is_subtree(s.right, t)
def is_same_tree(p, q):
if not p and not q:
return True
if not p or not q:
return False
if p.val != q.val:
return False
return is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)
时间复杂度:O(m * n),其中 m 和 n 分别为两棵树的节点数,因为我们需要遍历两棵树。
空间复杂度:O(max(m, n)),因为递归深度不超过 max(m, n)。
本文介绍了如何检查一棵二叉树是否是另一棵二叉树的子树。我们使用了递归算法来解决这个问题。时间复杂度为 O(m * n),空间复杂度为 O(max(m, n))。