algorithm - 合适的树数据结构

标签 algorithm data-structures tree

我一直在阅读树数据结构来建模问题。我需要构建一个数据的内存表示,它与文件系统中的文件夹/文件表示非常相似(我并不意味着存储在磁盘中的实际文件,而是类似于资源管理器的结构)。树的最大深度可能为 10 中间节点可能只有中等数量的子节点(比如 10 ),但可能有数千个叶节点。[这就像文件夹中的数千个文件,文件是叶节点]

一些想法

  • 二叉树无法工作,因为一个节点最多只能有 2 个节点 children 。 (假设我们可以有 3 个子文件夹)
  • 非常通用的树实现可能效率低下,因为我的数据可以排序。就像左边的 sibling 比右边的 sibling 小/小。我希望这允许有高效的遍历。
  • B 树听起来很接近,但它是否坚持平衡要求。在我的例子中,深度不会超过 10,但不一定所有分支都那么深。(比如 c:/windows 、C:/MyDoc../A/B/C)

请帮助您的经验。我应该定制一棵树或任何合适的可用数据结构(并不意味着特定于一种编程语言)

最佳答案

您有两种不同类型的节点:文件和文件夹。

文件夹节点包含一组(或映射)子项,其中子项本身可能是文件或文件夹。

或者,您可能希望文件夹节点包含一组文件和一组文件夹。

对于集合,只需使用您最喜欢的有序集合表示(可能是您使用的任何语言附带的那种)。根据具体情况,您可能更愿意使用 map 。

关于algorithm - 合适的树数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250564/

相关文章:

python - 在 Craigslist 上检测相似的帖子或广告

algorithm - 如何从给定的列表中有效地构建 B+ 树?

c++ - 检查元素是否存在

tree - 尝试和树之间的区别?

algorithm - 解决这个问题的更好方法是什么?

java - 我如何按降序完成排序?

php - 如何改进 if 算法

Java:数据结构的内置实现是否效率低下?

c++ - 如何为只有两种节点的树实现模板方法?

Python二叉树实现插入方法: help required