Treap 初级旋转+手动随机

  普通的BST会卡,主要是由于仰仗于随机数据,如果"用心"构造数据就会被卡掉.考虑如何不被卡掉呢?我们可以"随机构建二叉树.算法导论第三版第169页-第171页有关于"一课有n个不同关键字的随机构建二叉搜索树的期望高度为lg(n)"的具体证明,有兴趣的可以看一看..所以对于离线的题,可以先随机排列这些元素,然后按照排列的顺序将他们插入树中.

  如果没法同时得到所有元素,应该怎样处理呢?

  treap是一课更改了节点排序方式的BST,除了键值v外,每个节点都指定一个随机数作为优先级.假设所有的优先级都不同,一个合法的treap树上键值满足BST的性质,优先级遵循堆性质.可以证明对于特定的有键值和优先级的一些数有唯一的treap与之对应.可以证明所有的操作期望运行时间是log(n).可以证明每次插入新节点时执行旋转的期望次数小于2..

猜你喜欢

转载自www.cnblogs.com/qywyt/p/10285857.html