我正在trie树中编写一个插入方法,但是我想在字符之间保持顺序,但有一些错误,我无法知道,因为树的根仍然为空
public void insert (String name,TrieNode r)
{
if(r==null && name.length()>0)
{
r=new TrieNode(name.charAt(0));
if(name.length()>1)
insert(name.substring(1),r.getFirstChild());
}
else if(r.getletter()==name.charAt(0))
{
name=removeFirstChar(name);
insert(name,r.getFirstChild());
}
else
{
if(name.charAt(0) < r.getletter())
{
TrieNode n=new TrieNode(name.charAt(0));
n.setNextSibling(r);
r.setFirstChild(n);
}
else
insert(name,r.getNextSibling());
}
}
答案 0 :(得分:0)
我不是Java专家,但只是阅读代码的前几行,我注意到您正在初始化r=new TrieNode(name.charAt(0));
。这在Java中不起作用,因为对象是通过值而不是通过引用传递的,所以你基本上不能改变它们指向函数内部的内容。
阅读this文章了解详情。