我编写了一个递归方法,该方法应返回适合特定路线的树节点。该方法效果很好,但它不返回值,而只返回null。 知道怎么解决吗?这是代码:
private TrieNode<String,V> prefix_last_child(TrieNode<String,V> STN , String prefix) {
if (prefix.equals("")) {
return STN;
}
char[] preffixx = prefix.toCharArray();
if (STN.getNexts().get(alphabet_place(preffixx[0])) == null) {
return null;
}
if (!prefix.equals(""))
prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
return null;
}
答案 0 :(得分:3)
您的代码非常接近正常工作。这是问题所在:
if (!prefix.equals(""))
// You make a recursive invocation, and then...
prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
// ...ignore its return value, and return null instead!
return null;
替换为
if (!prefix.equals(""))
return prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
// ^^^^^^
return null;
解决问题。
答案 1 :(得分:1)
您只能从函数返回null
或常量STN
。甚至无法返回有意义/非固定值。
答案 2 :(得分:0)
编写递归方法,替换
if (!prefix.equals(""))
prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
与 if(!prefix.equals(&#34;&#34;)) return prefix_last_child(STN.getNexts()。get(alphabet_place(preffixx [0])),prefix.substring(1));