algorithm – 具有分摊的O(1)删除和O(log n)搜索的数据结构

我需要一个支持两个操作的数据结构 – 删除和搜索.现在,删除操作应该在分摊的O(1)时间内运行,而搜索应该在O(log n)时间内运行.

搜索操作应该如下工作:查找指定的值,如果它在这里,返回值本身.否则,返回最接近的更大值(返回inorder successor).

这个数据结构可以是什么?

最佳答案 它可以是一对数据结构:

>二叉搜索树,保持值
>哈希表,保存指向二叉搜索树中节点的指针

如果要搜索,请在O(log n)时间内在二叉搜索树中进行搜索.
当您要删除时,首先在分摊的O(1)中找到哈希表中的节点,并在分摊的O(1)中的二叉搜索树中删除.

点赞