【问题标题】:Directory (File-Folder) manipulation using a tree in c#在 c# 中使用树进行目录(文件文件夹)操作
【发布时间】:2013-11-26 16:50:59
【问题描述】:

人们谈论trees,是的,我可以理解tree 的概念以及traversingconceptually 的方式。有趣的是,在binary search tree 中,搜索时间是O(log N)

现在,我有一些folders in my system,其文件结构为not going to be modified,除了new files are added often

我可以想象,如果我构建一个表示文件夹结构的二叉搜索树,我可以很好地使用O(log N) 中的文件名进行搜索。我知道这可以通过内置的 .NET 方法非常有效地完成,但我正在尝试查看使用树的真实用例场景。

MSDN here 告诉 'Trees are common data structures because many real-world problems exhibit tree-like behavior. For example, any sort of hierarchical relationship among people, things, or objects can be modeled as a tree. 但是,问题是我无法将上述要求建模为树?

问题是这样的:

I cannot visualize how to connect the BST concept and my requirement。我看到的每一个二叉树样本,都只是通过向节点添加一些简单的整数并遍历它来解释。

  1. 如何为目录遍历构建树? (请-一些代码或伪代码,而不仅仅是理论答案!)

  2. 如何存储已经建好的树?

(至于从我的文件夹结构中获取所有文件,我使用我的代码here

【问题讨论】:

  • SO 不适合这类问题。常见问题解答将帮助您为本网站选择正确的问题。我会尝试 Programmers.SE。

标签: c# .net algorithm data-structures tree


【解决方案1】:

我认为您从根本上混淆了两个不相关的概念。树是一种具有与之关联的层次结构的数据结构。二叉搜索树是一种数据结构,它是一棵树,但对它的形状有更多的限制。每个节点必须有零个、一个或两个子节点。每个节点都在其中存储一些键,并且树具有对于每个节点,其左子树中的节点中的所有节点中的所有键都小于原始节点的键并且其右子树中的节点中的所有节点中的所有键都大于原始节点的键的性质.

虽然您可以使用一些技巧将目录树表示为二叉搜索树,但这样做会被误导,因为它是错误的工作工具。目录树可以具有任意大的分支因子,并且不以任何排序顺序存储。我建议首先阅读一般树,而不仅仅是二叉搜索树,以便更好地了解区别以及有关如何表示任意树结构的更多信息。

至于如何实际构建树 - 您可能想研究深度优先搜索或广度优先搜索算法,这可能是探索目录结构和构建目录树的绝佳候选者。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多