Деревья и бинарный поиск Деревья, использующие arraylist - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь создать объект, в котором я использую 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;
}
...