【问题标题】:How to design Priority search trees如何设计优先搜索树
【发布时间】:2018-04-04 12:51:37
【问题描述】:

我正在寻找具有以下属性的树。

  1. 应该是二叉搜索树
  2. 应该是优先级树 - 具有较高优先级的元素应该更靠近根。
  3. 迭代树时,优先遍历所有优先级较高的元素,然后遍历所有优先级较低的元素...
  4. 应该是平衡的。
  5. 插入/删除/更新操作应该是 O(logn)

我知道,树应该表现出二叉搜索树和堆的特性,也就是我们所说的优先级树。但是,我无法设计出满足上述所有特性的它,我也无法在互联网上找到干净的物质。

【问题讨论】:

  • 这是一个艰巨的任务,例如2 和 4 似乎直接冲突。
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask 在这里申请。最重要的是,展示你迄今为止的工作。
  • 优先级相同的元素是否有指定的迭代顺序?

标签: algorithm tree


【解决方案1】:

我认为不可能同时满足所有属性。

假设我的值 [1, 2, 3... 10] 的优先级等于该值。 如果您想要属性 1、2 和 3,那么唯一的选择是从 10 开始的仅左树。这显然是不平衡的。操作将是 O(N)。

如果你想要平衡,那么你需要将根移动到 10 以外的位置,但是你会破坏属性 3。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多