在 Trie 中搜索词?
Search word in Trie?
我在 Java 中有一个 Trie,我想搜索是否包含一个词。
例如:特里树:[casa-perro-animal],hogar = false;卡萨=真;
public boolean search (String word){
/**Method to complete**/
}
还有 class 节点的 Trie:
public class Trie {
/**
* Clase auxiliar para guardar caracteres que forman parte de una palabra
* @author zenon
*/
protected class Info {
char c; // Caracter actual
Info alt; // Caracter alternativo para la misma posición
Info next; // Caracter que es la primera opción en la siguiente posición
public Info(char c, Info alt, Info next) {
this.c = c;
this.alt = alt;
this.next = next;
}
}
protected Info root; // Referencia al punto de inicio de la estructura
有什么帮助吗?我是西班牙人。非常感谢。
您正在查看 Trie 的 doubly chained tree 实现:
image and description from wikipedia's entry on Trie
垂直箭头是子指针,水平虚线箭头是下一个指针。此 trie 中存储的字符串集是 {baby, bad, bank, box, dad, dance}
。列表已排序以允许按字典顺序遍历
如何搜索
您的搜索必须一个接一个地使用搜索到的字符 word
并导航 trie。
取第一个字符并检查您的根是否包含它。如果是,您可以移动到 word
中的下一个字符,然后沿着实线箭头向下移动到当前 list 的下一个节点 - 在您的实现中它是 next
类型 Info
的节点。这样你就在同一个 list 中向下遍历(根据上图)。
如果当前节点不包含您要搜索的字符,则水平移动到下一个备选 list(沿着虚线)。在您的情况下,这由 alt
Info
节点表示。然后你在那里重复测试同一个字母。如果运气不好,请再次转到下一个备选列表。
如果您检查了给定级别的所有替代 列表 ,但没有任何匹配项,并且面临死胡同(其中 alt == null
),您可以得出结论word
不包含在您的 trie 中。
相反,如果您已经使用了 word
中的所有字符并且位于 list 中的最后一个节点(即 next == null
),那么您可以得出结论,word
存储在 trie.
中
我在 Java 中有一个 Trie,我想搜索是否包含一个词。
例如:特里树:[casa-perro-animal],hogar = false;卡萨=真;
public boolean search (String word){
/**Method to complete**/
}
还有 class 节点的 Trie:
public class Trie {
/**
* Clase auxiliar para guardar caracteres que forman parte de una palabra
* @author zenon
*/
protected class Info {
char c; // Caracter actual
Info alt; // Caracter alternativo para la misma posición
Info next; // Caracter que es la primera opción en la siguiente posición
public Info(char c, Info alt, Info next) {
this.c = c;
this.alt = alt;
this.next = next;
}
}
protected Info root; // Referencia al punto de inicio de la estructura
有什么帮助吗?我是西班牙人。非常感谢。
您正在查看 Trie 的 doubly chained tree 实现:
image and description from wikipedia's entry on Trie
垂直箭头是子指针,水平虚线箭头是下一个指针。此 trie 中存储的字符串集是 {baby, bad, bank, box, dad, dance}
。列表已排序以允许按字典顺序遍历
如何搜索
您的搜索必须一个接一个地使用搜索到的字符 word
并导航 trie。
取第一个字符并检查您的根是否包含它。如果是,您可以移动到 word
中的下一个字符,然后沿着实线箭头向下移动到当前 list 的下一个节点 - 在您的实现中它是 next
类型 Info
的节点。这样你就在同一个 list 中向下遍历(根据上图)。
如果当前节点不包含您要搜索的字符,则水平移动到下一个备选 list(沿着虚线)。在您的情况下,这由 alt
Info
节点表示。然后你在那里重复测试同一个字母。如果运气不好,请再次转到下一个备选列表。
如果您检查了给定级别的所有替代 列表 ,但没有任何匹配项,并且面临死胡同(其中 alt == null
),您可以得出结论word
不包含在您的 trie 中。
相反,如果您已经使用了 word
中的所有字符并且位于 list 中的最后一个节点(即 next == null
),那么您可以得出结论,word
存储在 trie.