任何人都可以提供真实的例子,说明何时存储数据的最佳方式是什么?
我想了解哪种情况下treap会比堆和树结构更好。
如果可能的话,请提供一些实际情况的例子。
我试图在这里搜索使用treaps的情况并通过谷歌搜索,但没有找到任何东西。
谢谢。
答案 0 :(得分:11)
如果哈希值用作优先级,则treaps提供内容的唯一表示。
考虑实现为AVL树或rb树的项目的订单集。以不同顺序插入项目通常会以不同形状的树木结束(尽管所有这些都是平衡的)。对于给定的内容,无论历史如何,treap都将具有相同的形状。
我已经看到了为什么唯一表示可能有用的两个原因:
答案 1 :(得分:6)
我无法向您提供任何真实的例子。但我确实使用treaps来解决编程竞赛中的一些问题:
这些实际上不是真正的问题,但它们是有道理的。
答案 2 :(得分:5)
Treaps是平衡二叉搜索树的绝佳变体。确实存在许多算法来平衡二叉树,但是大多数都是可怕的事情,需要处理大量的特殊情况。另一方面,对Treaps进行编码非常容易。通过使用随机性,我们有一个预计具有对数高度的BBT。 使用treaps解决的一些好问题是 - http://www.spoj.com/problems/QMAX3VN/(简易级别) http://www.spoj.com/problems/GSS6/(中等级别)
答案 3 :(得分:3)