我无法理解 trie 的概念。从“trie”维基百科条目中,我有这张照片:
如果我没看错的话,trie 中的所有叶节点都会拼出整个单词,并且所有父节点都包含通向最终叶节点的字符。所以,如果我有一个名为 DigitalTreeNode 的类定义为
public class DigitalTreeNode {
public boolean isAWord;
public String wordToHere; (compiles all the characters in a word together)
public Map<String, DTN> children;
}
如果我想实现一个返回 trie 中最长单词的方法,它是否只涉及在每个叶节点处查找最长单词?我将如何实现一种方法,例如:
public static String longestWord (DigitalTreeNode d);
我猜它涉及设置一个最长的字符串变量,递归地遍历每个节点并检查它是否是一个单词,如果它是一个单词并且它的长度大于最长的变量,那么 long = newWordLength 。但是,我不确定 Map 孩子如何适应。我如何使用上述方法在任何 trie 中找到最长的单词?