database - AVL 树与平衡树

标签 database algorithm data-structures

AVL树是众所周知的内部存储器数据结构,而平衡树是众所周知的外部存储器数据结构。 为什么我们不能将平衡树也用于内存?

最佳答案

可以在内存中拥有平衡树。 AVL 树只是平衡树的一种,还有其他树,例如红黑树和 2-3-4 树。

所以,我不确定你从哪里得到平衡树不可能存在于内存中的想法,但如果我是你,我会重新考虑这一点。

事实上,如果您愿意的话,您也可以将 AVL 树放在磁盘上。


根据您的评论,我怀疑您可能想到的是一棵 BTree,它就像一棵二叉树,但每个节点可以保存多个值并且有两个以上的子节点,如:

root node -,
           |
           V
 +------+------+------+
 | Val1 | Val2 | val3 |
 +------+------+------+
/       |      |      \
<other nodes down here>

这与更通用的术语“平衡树”不同,它们通常用于磁盘情况,因为您倾向于一次读/写整个 block /集群/扇区。

因此,如果您可以将十个值放入一个磁盘 block 中,那么使用 BTree 会更有效(而内存没有 block 大小的概念,因此最好使用更简单的算法 - BTree 必须将两者结合起来树搜索查找节点,线性/二元搜索查找节点中的值。

但是,虽然 BTree 可以是平衡树的类型,但它也只是一种类型。

关于database - AVL 树与平衡树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371078/

相关文章:

algorithm - 加权图的 BFS 算法 - 寻找最短距离

database - 使用 LMDB 在内存数据库中

python - Python DBM 真的很快吗?

mysql - SQL 看不到别名

java - 我如何为访问 n 个教会的 n 个牧师制定时间表?

python - 如何计算python 2D散点占用面积

mysql - 将特定记录从一个数据库导入到另一个数据库

java - Java 中的循环链表

c++ - 如果你有两个键并且不能使用 boost,首选数据结构?

c - 使用指针将嵌套结构传递给函数