我们知道平衡树在O(log n)时间内执行插入,删除和搜索,例如包括
但是,当键是在某个有限范围内的整数时,可以使用Van Emde Boas树将这些操作降低到O(log(log n)) - 时间,即指数地优于AVL或RB树.嗯,这实际上是许多现实世界应用程序的情况.
我看到很多应用程序.我想引用的是数据库,创建索引主要涉及在Hash或B*-tree之间进行选择.如果实现了Van Emde Boas树,它将提供这两个选项之间的中间点,理论上可以改善许多查询优化问题.
为什么Van Emde Boas树从未被广泛用作红黑或B树
有什么考虑呢?
众所周知,所有递归函数都可以仅使用单个循环和堆栈来编写。虽然这种转换可能会被批评为丑陋或可读性差,但它的主要用途显然是为了避免粉碎堆。
有很自然的方法可以将简单的递归函数转换为循环。例如,使用累加器进行简单的尾递归消除。到目前为止,我还没有看到这个问题的明确答案。
至少对我来说,有时将这种递归函数转换为提供堆栈的循环似乎是黑魔法。例如,考虑为
f(n) = n, if n <= 1
f(n) = f(n-1) + f(n-2) + 1, if n > 1
Run Code Online (Sandbox Code Playgroud)
这个问题的核心是: