A String key in a TrieST is not stored in in a single node.
The node structure does not contain a String (or a char) member!
So iterating through the Strings (in alphabetical order) is a bit different.
public Iterable<String> keys()
{
Queue<String> q = new Queue<String>();
collect(root, "", q);
return q;
}
private void collect(Node<V> x, String key, Queue<String> queue)
{
if (x == null) return;
if (x.val != null) {
queue.enqueue(key);
}
for (int c = 0; c < TrieST.R; c++) {
collect(x.next[c], key + (char) c, queue);
}
}
Egad! How long does this take to execute?