📅  最后修改于: 2023-12-03 14:55:43.581000             🧑  作者: Mango
BST全称为二分搜索树,是一种常用的数据结构,它的左子树节点值都小于根节点值,右子树节点值都大于根节点值。本文将介绍如何检查两个BST是否包含相同的元素集。
由于BST的特殊性质,我们可以采用递归的方式遍历两个BST,将遍历过的节点值存入集合中,最后比较两个集合是否相等即可。
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
def inorder(root: TreeNode, res: List[int]) -> None:
if not root:
return
inorder(root.left, res)
res.append(root.val)
inorder(root.right, res)
p_vals, q_vals = [], []
inorder(p, p_vals)
inorder(q, q_vals)
return p_vals == q_vals
测试样例1:
输入:
p: [1,null,2,3]
q: [1,null,2,3]
输出:
True
测试样例2:
输入:
p: [1,2,1]
q: [1,1,2]
输出:
False
本文介绍了如何使用递归来检查两个BST是否包含相同的元素集,并给出了相应的代码实现。下一步可以扩展此思路用于检查两个非BST是否包含相同的元素集。