bobo老师请看看我这个add字典树的递归方法哪里有问题?
来源:10-5 Trie字典树和简单的模式匹配
橙宝宝
2019-07-15
public void add(String word) {
root = add(root, word, word.length(), 0);
}
private Node add(Node node, String word, int length, int depth) {
if(node == null) {
return new Node();
}
if(depth == length) {
if(!node.isWord){
node.isWord = true;
size++;
}
return null;
}
char c = word.charAt(depth);
node.next.put(c, add(node.next.get(c), word, length, depth+1));
return node;
}我用递归方式实现后,
。
不知道哪里的逻辑错了,看了很久了,希望解答!
写回答
1回答
-
liuyubobobo
2019-07-16
不要只是“看”程序,要“调”程序。这个错误,你只要从空树开始,实际添加一个词,比如"cat",就能触发。实际调试,看看你的程序到底是怎么运行的。每一步逻辑运行,数据是如何改变的?和你预期的是否一样?如果不一样,自己哪里想错了?进步就发生在这个过程中哦。
==========
在添加新节点的时候,比如添加 h-e-l-l-o。
从根节点出发,发现h没有,于是进入了:
if(node == null) {
return new Node();
}
但这个逻辑相当于只添加了h节点,对于后面的 e-l-l-o都没有添加上,就返回了。
==========
我在这个课程的补充代码中,提供了一版我实现的Trie的递归实现,可以参考。
继续加油!:)
00
相似问题