【发布时间】:2017-03-25 02:25:39
【问题描述】:
这是我的 Trie 实现。
public class Trie {
private class Node{
private Map<Character, Node> children;
boolean end;
public Node(){
children = new HashMap<>();
end = false;
}
}
private Node root;
public Trie(){
root = new Node();
}
public void insert(String word){
Node current = root;
for (int i=0; i < word.length(); i++){
char c = word.charAt(i);
Node node = current.children.get(c);
if(node == null){
node = new Node();
current.children.put(c, node);
}
current = node;
}
}
public boolean search(String word){
Node current = root;
for(int i =0; i < word.length(); i++){
char c = word.charAt(i);
Node node = current.children.get(c);
if(node == null)
return false;
current = node;
}
return current.end;
}
}
我想添加一个方法,给定一个字符串返回它的所有子项,这可以用作现实世界的自动更正建议。
这是方法签名:
public List<String> returnAllChildren(String str){
}
我对这个有点迷茫。任何帮助表示赞赏。
【问题讨论】:
-
这是一个很好的递归用例。
-
我尝试采用迭代方式。
-
当您只想遍历每个节点的一个子节点时,迭代很好。但是对于您的问题,您希望了解每个节点的 all 子节点。 “简单”迭代还不够好。 (您可以通过保留尚未检查的节点的“待办事项”列表来做到这一点而无需递归。但我认为递归解决方案要简单一些。)
标签: java data-structures trie