📌  相关文章
📜  检查两个BST是否包含相同的元素集(1)

📅  最后修改于: 2023-12-03 14:55:43.581000             🧑  作者: Mango

检查两个BST是否包含相同的元素集

简介

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是否包含相同的元素集。