【发布时间】:2014-03-23 22:00:33
【问题描述】:
我认为问题是根为空。有人会教我如何以正确的方式去做吗?因为我不知道为什么它是空的……我认为删除功能很好地实现了,但是由于 root 为空,它不会继续执行。请帮忙。 也欢迎任何建议:D
public static void main(String[] args) {
Tree t = new Tree("");
String msg;
String[] inputs;
Scanner sc = new Scanner(System.in);
ArrayList <String> palavras = new ArrayList <String>();
int i = 0;
while (true) {
msg = sc.nextLine();
if (msg.equals("")) {
break;
}
inputs = msg.split(" ");
i = 0;
while (i < inputs.length) {
palavras.add(inputs[i]);
i++;
}
}
i = 0;
while (i < palavras.size()) {
if (palavras.get(i).equals("REMOVE")) {
t.remove(palavras.get(i+1));
palavras.remove(i+1);
i+=1;
} else {
t.insert(palavras.get(i).toLowerCase());
i++;
}
}
t.postorder();
t.preorder();
t.inorder();
}
**********************************************************
public void remove( String word)
{
Node father=root;
Node actual=root;
boolean leftnode=true;
if(root!=null){
while(!word.equals(actual.str))
{
father=actual;
if(word.compareTo(actual.str)<0)
{
leftnode=true;
actual=actual.left;
}
else{
leftnode=false;
actual=actual.right;
}
if(actual==null){
return ;
}
}
actual.occ = 0;
}
}
【问题讨论】:
-
用调试器单步调试你的代码了吗?这应该是您的第一个猜测,Eclipse 甚至内置了一个非常舒适的。此外,英文变量名将有助于(至少我)更好地理解您的代码。
-
是的,我调试了但不明白为什么会这样
-
在某些时候,某些代码行必须将根设置为空。找到那条线。也许尝试使用硬编码的树,即为您知道树应该是什么样子的数组构建一个。
-
我已经意识到并编辑了这句话。还是去找吧!
-
还是什么都没有。我完全迷路了......
标签: java algorithm data-structures binary-search-tree red-black-tree