我有一个按升序排列的整数输入流,我的任务是动态地从该流中创建一个平衡二叉搜索树。我已经浏览了链接:来自整数流的 BBST,并了解我们可以使用红黑树。问题是,我正在寻找更优化的解决方案,这些解决方案使用输入数据中的“排序信息”。
问问题
1169 次
3 回答
2
如果您使用红黑树,但始终从插入的最后一个节点而不是根节点开始插入,并使用自下而上的插入算法,则插入是 O(1) 摊销的。这意味着构建树将花费 O(n),而不是 Ω(n log n)。
于 2016-03-20T16:26:52.860 回答
0
问题是数据量是未知的。因此,无论输入是否有模式(升序),这棵树都必须是自平衡的。
如果在这种情况下 O(log n) 插入时间是不可接受的(例如对于红黑树),那么我不知道为什么首先需要以平衡二叉树的形式存储它。动态数组上的二进制搜索与树一样快,插入时间平均为 O(1)。
如果事先知道流的大小,那么构建树当然会容易得多。
于 2016-03-20T08:51:31.947 回答