Я пытаюсь создать объект, в котором я использую arrayList для создания BST. Я назначаю свою переменную frist в качестве родителя, поэтому в 0 в массиве мой вопрос заключается в том, как я могу добавить правый лист к этому в пятне 2, не имея уже левого листа пятна 1? это то, что у меня сейчас есть, и я продолжаю получать java .lang.IndexOutOfBoundsException
import java.util.ArrayList;
public class test{
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
myData a = new myData(2, 'B', "joe:smo");
myData b = new myData(7, 'B', "joe:smo");
myData c = new myData(5, 'B', "joe:smo");
myData d = new myData(2, 'B', "joe:smo");
myData e = new myData(6, 'B', "joe:smo");
myData f = new myData(9, 'B', "joe:smo");
myData g = new myData(5, 'B', "joe:smo");
myData h = new myData(11, 'B', "joe:smo");
myData i = new myData(4, 'B', "joe:smo");
BinaryStreeImplicit tree = new BinaryStreeImplicit();
tree.root(a);
tree.insert(b);
tree.insert(c);
tree.insert(d);
tree.insert(e);
tree.insert(f);
tree.insert(g);
tree.insert(h);
tree.insert(i);
tree.print();
}
static class BinaryStreeImplicit {
int root = 0;
ArrayList<myData> data = new ArrayList<myData>();
int treeSize = 0;
int lastIndex = 0;
public void root(myData x) {
data.add(x);
}
public void print() {
for (int i = 0; i < data.size(); i++) {
System.out.println(data.get(i).courseNumber);
}
}
public void insert(myData x) {
int n = 0;
int r = 1;
while (r == 1) {
if (x.courseNumber < data.get(n).courseNumber) {
n = (root * 2) + 1;
if (data.get(n) == null) {
data.set(n, x);
r = 0;
treeSize++;
}
} else {
n = (root * 2) + 2;
if (data.get(n) == null) {
data.set(n, x);
r = 0;
treeSize++;
}
}
}
}
}
myData класс выглядит так
public class myData {
int courseNumber;
char grade;
String stuName;
public myData(int courseNumber, char grade, String stuName) {
this.courseNumber = courseNumber;
this.grade = grade;
this.stuName = stuName;
}
public int getCourseNumber() {
return courseNumber;
}
public char getGrade() {
return grade;
}
public String getStuName() {
return stuName;
}