在Clojure代码中考虑以下树结构:
(def tree [7 9 [7 5 3 [4 6 9] 9 3] 1 [2 7 9 9]])
例如,树中所有偶数的路径都是:
[[2 3 0] [2 3 1] [4 0]]
这是一份清单。每个“内部”列表代表从树的根到感兴趣的叶子的绝对路径。
我现在正在寻找一种数据结构来表示没有冗余的结果。如您所见,例如[2 3]的片段在两个条目中重复。我想出了一个嵌套的哈希映射,但也许有一些更简单的东西:
{2 {3 {0 true 1 true}
4 {0 true}}
答案 0 :(得分:3)
我相信DAWG对你的问题有点过分。您的路径的后缀几乎不会被共享。因此trie的使用应该足够了(这实际上是您的嵌套哈希映射方法)。它也是pretty easy to generate it in clojure。
答案 1 :(得分:1)
在您的数据中,所有路径都包含一组字符串(或单词)。叶子的每条路径都代表一条偶数路径。