【发布时间】:2013-02-13 21:29:54
【问题描述】:
假设我们正在处理键 1-15。要获得常规 BST 的最差性能,您可以按升序或降序插入键,如下所示:
1、2、3、4、5、6、7、8、9、10、11、12、13、14、15
那么BST本质上会变成一个链表。
对于 BST 的最佳情况,您可以按以下顺序插入键,它们的排列方式是下一个插入的键是要插入的总范围的一半,所以第一个是 15/2 = 8 ,然后 8/2 = 4 等等...
8、4、12、2、6、10、14、1、3、5、7、9、11、13、15
那么 BST 将是一棵平衡良好的树,最佳高度为 3。
红黑树的最佳情况也可以用 BST 的最佳情况来构造。但是我们如何构建红黑树的最坏情况呢?它与 BST 的最坏情况相同吗?是否存在会产生最坏情况的特定模式?
【问题讨论】:
-
嘿,这是一个很好的问题,我想。我对知道答案特别感兴趣。也许 ctheory stackexchange 的人可以在这里提供帮助。那么,如果你可以在那里发布呢?
-
你能澄清一下
half of the total range to be inserted吗?只是好奇,想不通 -
最坏的情况是相当好的。 Wikipedia 说:“树的平衡并不完美,但足以让它保证在 O(log n) 时间内进行搜索,其中 n 是树中元素的总数。”并且:“[...] 在 [...] 实时应用程序中很有价值 [...] 并且当前 Linux 内核和 epoll 系统调用实现中使用的完全公平调度器使用红黑树。”
标签: binary-search-tree red-black-tree insertion-order