Voglio stampare o recuperare tutte le parole memorizzate in Trie Data Structure. Questo perché voglio calcolare la distanza tra una parola errata e una parola nel dizionario. Quindi stavo pensando di recuperare ogni parola da Trie e calcolare Modifica distanza. Ma non sono in grado di recuperare. Voglio qualche frammento di codice per questo. Ecco come ho implementato il Trie usando HashMap
in JavaCome stampare tutte le parole memorizzate in un albero, dove è stato implementato trie usando Hashmap in Java?
Ora dimmi come scrivere codice per stampare tutte le parole memorizzate in Trie. Qualsiasi aiuto è molto apprezzato
TrieNode.java
package triehash;
import java.io.Serializable;
import java.util.HashMap;
public class TrieNode implements Serializable {
HashMap<Character, HashMap> root;
public TrieNode() {
root = new HashMap<Character, HashMap>();
}
}
TrieDict.java
package triehash;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;;
import java.io.Serializable;
import java.util.HashMap;
import java.io.Serializable;
public class TrieDict {
public TrieNode createTree()
{
TrieNode t = new TrieNode();
return t;
}
public void add(String s, TrieNode root_node) {
HashMap<Character, HashMap> curr_node = root_node.root;
s = s.toLowerCase();
for (int i = 0, n = s.length(); i < n; i++) {
Character c = s.charAt(i);
if (curr_node.containsKey(c))
curr_node = curr_node.get(c);
else {
curr_node.put(c, new HashMap<Character, HashMap>());
curr_node = curr_node.get(c);
}
}
curr_node.put('\0', new HashMap<Character, HashMap>(0)); // term
}
public void serializeDict(TrieNode root_node)
{
try{
FileOutputStream fout = new FileOutputStream("/home/priya/NetBeansProjects/TrieHash/dict.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(root_node);
oos.close();
System.out.println("Done");
}catch(Exception ex){
ex.printStackTrace();
}
}
public void addAll(String[] sa,TrieNode root_node) {
for (String s: sa)
add(s,root_node);
}
public static void main(String[] args)
{
TrieDict td = new TrieDict();
TrieNode tree = td.createTree();
String[] words = {"an", "ant", "all", "allot", "alloy", "aloe", "are", "ate", "be"};
for (int i = 0; i < words.length; i++)
td.add(words[i],tree);
td.serializeDict(tree); /* seriliaze dict*/
}
}
@sigpwned .. Grazie per il vostro aiuto. Sto affrontando ora un altro problema. Il codice seguente non funziona Stringa word1 = "ant" Imposta Words = ts.computeWords (tree.root); if (Words.contains (word1)) System.out.println ("Word exists"); –
user2281107
Ciao @ utente2281107. Sembra una domanda a parte, quindi dovresti probabilmente chiederlo come un'altra domanda di alto livello. – sigpwned