我需要一个支持两个操作的数据结构 – 删除和搜索.现在,删除操作应该在分摊的O(1)时间内运行,而搜索应该在O(log n)时间内运行.
搜索操作应该如下工作:查找指定的值,如果它在这里,返回值本身.否则,返回最接近的更大值(返回inorder successor).
这个数据结构可以是什么?
最佳答案 它可以是一对数据结构:
>二叉搜索树,保持值
>哈希表,保存指向二叉搜索树中节点的指针
如果要搜索,请在O(log n)时间内在二叉搜索树中进行搜索.
当您要删除时,首先在分摊的O(1)中找到哈希表中的节点,并在分摊的O(1)中的二叉搜索树中删除.