我需要存储'/'在c#的树状结构中分隔字符串,我该怎么做呢?

本文关键字:分隔 结构 字符串 我该怎么做 存储 | 更新日期: 2023-09-27 17:52:16

我试图将长字符串的部分存储在一个有效的树状结构中,我已经搜索了,但大多数实现都是在单词内搜索…让我用一个例子来解释我的意思,如果我有:

/potato/carrot/tomato
/potato/carrot/pea
/potato/lettuce

我最初的想法是它应该看起来像这样

potato
 - carrot
   -tomato
   -pea
 - lettuce

,就我所搜索的而言,真正有效的搜索树(如DAWG和Tries)是用于将单词存储为字符,我不确定我应该如何使用它。什么好主意吗?

提前感谢!

编辑:就持久性而言,我不需要存储树,所以我认为只要程序运行,就把它保存在内存中。

Edit2:就孩子的存储而言,我最终使用了HybridDictionaries,它比字典更有效,现在一切都工作得很快,谢谢很多家伙!

我需要存储'/'在c#的树状结构中分隔字符串,我该怎么做呢?

为了将它保存在内存中,您可以使用我最近遇到的这种模式:

class Vegetable : Dictionary<string, List<Vegetable>>

根据你想用它做什么(搜索,计数,排序),你可以在类中实现辅助方法

我认为DAWG是一个很好的方法…看看这个项目,虽然它可以做一些优化,它是在c#中,虽然它已经有几年的历史了,但算法并没有改变。

DawgSharp

包含MakeDawg, FindNodeDepth等方法

"该程序接受一个纯文本文件,仅由26行小写英文字符组成。它生成一个前缀和后缀组合的树,它比存储相同信息的许多数据结构更有效。这个生成器代码非常慢,但它确实可以工作。这可能需要几分钟。它需要优化,算法确实需要改进,但我并没有在这方面投入太多精力,因为它在我的程序中并不经常运行。"

这是另一个有趣的教程格式的方法。

这里还有一个有趣的分解