我在C#中寻找树或图数据结构,但我猜没有提供。使用C#2.0进行的数据结构的广泛检查解释了一些原因。是否有一个方便使用的库通常用于提供此功能?也许可以通过一种策略模式来解决本文中提出的问题。
我实现自己的树有点愚蠢,就像实现自己的ArrayList一样。
我只想要可以不平衡的通用树。想一想目录树。C5看起来很漂亮,但是它们的树结构似乎被实现为平衡的红黑树,比表示节点的层次结构更适合于搜索。
我最好的建议是,没有标准的树数据结构,因为有很多方法可以实现它,所以不可能用一个解决方案覆盖所有基础。解决方案越具体,就越不可能适用于任何给定的问题。我甚至对LinkedList感到恼火- 如果我想要一个循环链表怎么办?
您需要实现的基本结构将是节点的集合,这是一些入门的选项。假设Node类是整个解决方案的基类。
如果只需要在树上导航,则Node类需要一个子级列表。
如果需要在树上导航,则Node类需要一个指向其父节点的链接。
构建一个AddChild方法,该方法处理这两点的所有细节以及必须实现的任何其他业务逻辑(子限制,对子进行排序等)