我已经探索了T-tree和 B-/B+ 树的定义。从网络上的论文中,我了解到 B 树在分层内存中表现更好,例如磁盘驱动器和缓存内存。
我无法理解的是为什么 T-trees 甚至被用于平面内存?
它们被宣传为 AVL 树的节省空间的替代品。
在最坏的情况下,T 树的所有叶节点只包含一个元素,所有内部节点都包含允许的最小数量,接近满。这意味着平均只使用了一半的分配空间。除非我弄错了,否则这与 B 树的最坏情况相同,即 B 树的节点是半满的。
假设两棵树都将键本地存储在节点中,但使用指针来引用记录,唯一的区别是 B 树必须为每个分支存储指针。这通常会导致高达 50% 或更少的开销(在 T-tree 上),具体取决于键的大小。事实上,这接近于 AVL 树中预期的开销,假设没有父指针、嵌入在节点中的记录、嵌入在记录中的键。这是阻止我们使用 B-trees 的预期效率增益吗?
T 树通常在 AVL 树之上实现。AVL 树比 B 树更平衡。这可以与T-trees的应用联系起来吗?