如何设计优先搜索树

时间:2018-04-04 12:51:38

标签: algorithm tree

我希望实现一个具有以下属性的树。

  1. 应该是二元搜索树
  2. 应该是优先级树 - 具有更高优先级的元素应该更接近根。
  3. 当迭代树时,首先遍历所有具有较高优先级的元素,然后遍历所有具有较低优先级的元素...
  4. 应该平衡。
  5. 插入/删除/更新操作应为O(logn)
  6. 我知道,树应该展示二元搜索树和Heap的属性,这就是我们所说的优先级树。但是,我无法设计出满足上述所有特性的产品,也无法在互联网上找到清洁的产品。

1 个答案:

答案 0 :(得分:0)

我认为不可能同时满足所有物业。

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

如果你想要平衡,那么你需要将根移动到10以外的其他东西,但是你破坏属性3.