【发布时间】:2020-04-12 14:07:51
【问题描述】:
我最近开始详细阅读数据结构。我遇到了树。 AVL 树的设计考虑了快速内存访问,而 B 树的设计考虑了高效的磁盘存储。假设我想设计一棵既节省内存又节省磁盘存储的树,我应该使用什么树?有什么办法可以结合 AVL 树和 B 树吗?有没有其他的树可以两者兼得?这在现实世界的场景中基本上是可能的吗?
【问题讨论】:
标签: data-structures tree binary-tree avl-tree b-tree
我最近开始详细阅读数据结构。我遇到了树。 AVL 树的设计考虑了快速内存访问,而 B 树的设计考虑了高效的磁盘存储。假设我想设计一棵既节省内存又节省磁盘存储的树,我应该使用什么树?有什么办法可以结合 AVL 树和 B 树吗?有没有其他的树可以两者兼得?这在现实世界的场景中基本上是可能的吗?
【问题讨论】:
标签: data-structures tree binary-tree avl-tree b-tree
我想设计一个既节省内存又节省磁盘存储的树(...)有什么方法可以结合 AVL 树和 B 树?
简短的回答是不,没有,除非你在数据结构领域有突破性的发现。两者都在设计时考虑了特定的优化要求,您不能两全其美。
计算中有一个名为Space–time tradeoff 的概念,它可以扩展到其他类型的权衡,例如您感兴趣的权衡。您可以这样想:要改进已经优化的算法的属性,您将不得不让另一个变得更糟(除非你发现了一些以前没有人想过的新方法)。
我建议您查看优化的Binary Trees 的可用实现,并从最适合您需求的实现开始。
【讨论】: