在一个Java文件中,我有以下代码:

MyTree atree = new MyTree();
atree.insert(1);


这不是一棵普通的树。 “树”是根节点。该树中的每个节点都有5个子节点,所有子节点最初都设置为null。用于插入的参数是您要“激活”的子项,即使其不为空。所以我在MyTree类中有一个方法可以做到这一点:

public void insert(int i)
{
    if(i == 1)
    {
        MyTree current = this.getChildOne();
        current = new MyTree();
    }
}


调用函数后,我检查文件中调用它的第一个节点。

if(atree.getChildOne() == null)
{
    return -1;
}


并且它总是返回负数。我怀疑插入功能实际上在'atree'的副本上而不是在实际的'atree'上。但是我不确定。有人解释吗?

最佳答案

看起来您似乎没有在任何地方分配孩子。编码

MyTree current = this.getChildOne();
current = new MyTree();


没有分配孩子一个。您初始化局部变量current,但是在方法结束时该变量会丢失。

我认为您可能想在插入方法中执行类似的操作

if ( i == i ) {
   this.childOne = // assign it here
}

08-26 20:52