Commit 2b7bc29d authored by Adam Blank's avatar Adam Blank
Browse files

Update AutoCompleteTrie.java

parent 85deb9ee
No related merge requests found
Pipeline #7789 canceled with stage
Showing with 28 additions and 0 deletions
+28 -0
package wordcorrector;
import edu.caltech.cs2.datastructures.IterableString;
import edu.caltech.cs2.datastructures.LinkedDeque;
import edu.caltech.cs2.datastructures.TrieMap;
import edu.caltech.cs2.interfaces.IDeque;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.Scanner;
import java.util.function.Function;
......@@ -46,6 +49,31 @@ public class AutoCompleteTrie extends TrieMap<Character, IterableString, Integer
return characters;
}
protected TrieNode<Character, Integer> followKey(IterableString key) {
Iterator<Character> letters = key.iterator();
TrieNode<Character, Integer> current = this.root;
while (letters.hasNext()) {
Character letter = letters.next();
if (!current.pointers.containsKey(letter)) {
return null;
}
current = current.pointers.get(letter);
}
return current;
}
protected void getKeys(TrieNode<Character, Integer> current, IDeque<Character> keySoFar, IDeque<IterableString> keys) {
if (current.value != null) {
keys.add(super.collector.apply(keySoFar));
}
for (Character letter : current.pointers.keySet()) {
keySoFar.addBack(letter);
getKeys(current.pointers.get(letter), keySoFar, keys);
keySoFar.removeBack();
}
}
/**
* Retrieves keys that have the given key as a prefix
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment