在二叉搜索树中插入方法
Insert Method in a Binary Search Tree
public void insert(Buchstabe pBuchstabe,char[] pChar,int pStelle)
{
if(pBuchstabe==null)
return;
int Stelle = pStelle;
if(baum.isEmpty())
{
baum=new BinaryTree(pBuchstabe);
}
else {
if(pStelle < pChar.length)
{
if(pChar[Stelle] == '.')
{
Mybaum lTree=this.getLeftTree();
Stelle++;
lTree.insert(pBuchstabe,pChar,Stelle);
this.baum.setLeftTree(lTree.baum);
}
else
if(pChar[Stelle]=='-')
{
Mybaum rTree=this.getRightTree();
Stelle++;
rTree.insert(pBuchstabe,pChar,Stelle);
this.baum.setLeftTree(rTree.baum);
}
}
else
return;
}
}
所以这是我的插入方法。问题是它只将我传递给它的最后一个 Buchstabe 添加到 BinaryTree。所以它会得到一个 Buchstabe,一个带有一些 '.' 的字符数组。或其中的'-'代码和一个整数,当在开头调用insert merhod时,该整数从0开始。没有真正的错误,但我得到了这个输出:http://puu.sh/h9I4E/beee4f30a9.png。
它应该创建一个包含 26 个项目的二叉树,但只有一个出现在错误的一侧。
我发现了问题,它是插入的第二部分,它采用左侧而不是右侧树。
if(pChar[Stelle]=='-')
{
Mybaum rTree=this.getRightTree();
Stelle++;
rTree.insert(pBuchstabe,pChar,Stelle);
this.baum.**setLeftTree**(rTree.baum);
}
public void insert(Buchstabe pBuchstabe,char[] pChar,int pStelle)
{
if(pBuchstabe==null)
return;
int Stelle = pStelle;
if(baum.isEmpty())
{
baum=new BinaryTree(pBuchstabe);
}
else {
if(pStelle < pChar.length)
{
if(pChar[Stelle] == '.')
{
Mybaum lTree=this.getLeftTree();
Stelle++;
lTree.insert(pBuchstabe,pChar,Stelle);
this.baum.setLeftTree(lTree.baum);
}
else
if(pChar[Stelle]=='-')
{
Mybaum rTree=this.getRightTree();
Stelle++;
rTree.insert(pBuchstabe,pChar,Stelle);
this.baum.setLeftTree(rTree.baum);
}
}
else
return;
}
}
所以这是我的插入方法。问题是它只将我传递给它的最后一个 Buchstabe 添加到 BinaryTree。所以它会得到一个 Buchstabe,一个带有一些 '.' 的字符数组。或其中的'-'代码和一个整数,当在开头调用insert merhod时,该整数从0开始。没有真正的错误,但我得到了这个输出:http://puu.sh/h9I4E/beee4f30a9.png。 它应该创建一个包含 26 个项目的二叉树,但只有一个出现在错误的一侧。
我发现了问题,它是插入的第二部分,它采用左侧而不是右侧树。
if(pChar[Stelle]=='-')
{
Mybaum rTree=this.getRightTree();
Stelle++;
rTree.insert(pBuchstabe,pChar,Stelle);
this.baum.**setLeftTree**(rTree.baum);
}