我無法理解trie的概念。從「特里」維基百科條目我看到這樣的畫面: 如何找到一個trie中最長的單詞?
如果我看到這個正確的,在特里的所有葉子節點將會在整個單詞拼寫和所有的父節點保持領先了最後葉人物節點。所以,如果我已經
public class DigitalTreeNode {
public boolean isAWord;
public String wordToHere; (compiles all the characters in a word together)
public Map<String, DTN> children;
}
如果我要實現它返回線索中最長的單詞將它僅僅涉及在每個葉子節點找到最長的單詞的方法定義了一個名爲DigitalTreeNode類?我將如何實現的方法,如:
public static String longestWord (DigitalTreeNode d);
我猜它必須設置一個最長的字符串變量,遞歸地通過每個節點會,並檢查它是否是一個字,如果它是一個詞,它的長度大於最長變量then最長= newWordLength。但是,我不確定Map兒童是如何適應的。我如何使用上述方法找到任何字符串中最長的單詞?
什麼複雜性你在找什麼?關於結構的[BFS](http://en.wikipedia.org/wiki/Breadth-first_search)可以很容易地在'O(| S | * n)'中找到它,其中| S |是平均字符串的長度。我認爲用標準的trie可以做得更好,但是如果你可以操縱DS,那麼我可以做得更好。 – amit
查看每個字符串字符並假設它們是| S |字符長,我認爲我可以做得比O(| S | * n)複雜得多。 – user1766888