【问题标题】:How to design a tree data structure that supports deletion of elements lower than a given value?如何设计支持删除低于给定值的元素的树形数据结构?
【发布时间】:2015-08-30 03:12:09
【问题描述】:

出于我的一种算法的目的,我想创建一个支持O(lg n)时间复杂度的以下操作的数据结构:

  • 添加一个新项目;
  • 正在搜索新项目;
  • 删除所有键值低于给定值的项目。

我猜一棵树将是支持这些操作的最合适的数据结构。但是,我实际上不知道如何在对数时间内实现最后一个。我该如何设计它?

【问题讨论】:

  • 最后一个要点是否意味着删除所有项其键低于给定值的项目?
  • @delnan:是的,确实如此。
  • 你在说什么复杂度?在log(n) 中比较很容易,但log(n) 通常比较困难(包括释放每个已释放节点的内存的成本)。

标签: algorithm tree


【解决方案1】:

您可以使用平衡二叉搜索树(AVL,红黑,您选择)。低于给定元素的元素将在沿着连接它到根的路径的左子节点中找到。剩下的就简单了……

【讨论】:

  • 感谢您的回答,这很有用。但是,我对最坏情况的复杂性感兴趣。据我所知,一个典型的二叉搜索树实现在最坏的情况下支持O(n) 中的这些操作。
  • 对不起,我的意思当然是平衡二叉搜索树,它在 O(log n) 中完成。我正在更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多