Дерево не бинарное

У меня есть массив типа int, который описывает объекты Node определёнными последовательностями чисел, у каждого Node может быть больше двух потомков, я не нашёл нормальной информации о том, как строить такое дерево, я сделал так : из массива получаю информацию о названии, весе, и кол-ве потомков корня Node. По кол-ву потомков я создал массив типа Node длиной в число потомков. Что именно я должен поместить в этот массив - объекты, или ссылки на них по типу Node n1, n2 ...;

Проблема в том, что массив может быть любой длины, и я не совсем понимаю как мне организовать тот код что я написал, для того чтобы доставать информацию не только о корне, но и об объектах ссылки на которые будут находиться в массивах типа Node.

Пример конструктора для объекта типа Node который имеет потомков

public Node(String name, int weight, Node[] children) {
    this.name = name;
    this.weight = weight;
    this.children = children;
}

Если у Node нет потомков, то я сделал такой же конструктор только без массива Children. Вот код который у меня есть к этому времени (массив заполнил произвольными данными, чтобы было с чем работать и видеть работает ли то, что я пишу, а так не считая очередности информации он может быть произвольным) P.S. для поиска каждого параметра для корня я написал по 2 варианта кода, потому что название может быть записано в list[startPoint], или в list[startPoint] + list[startPoint + 1], то-есть 2 символа char

public class Main {


public static void main(String[] args) {
    String korName;
    int korWeight;
    int temp = 0;

    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter array's size");
    int size = scanner.nextInt();
    System.out.println("Enter starting point");
    int startPoint = scanner.nextInt();
    int[] list = new int[size];
    list[0] = 0;
    list[1] = 65;
    list[2] = 0;
    list[3] = 1;
    list[4] = 7;
    list[5] = 19;
    list[6] = 0;
    list[7] = 66;
    list[8] = 0;
    list[9] = 2;
    list[10] = 14;
    list[11] = 0;
    list[12] = 31253;
    list[13] = 31254;
    list[14] = 68;
    list[15] = 0;
    list[16] = 4;
    list[17] = 17;
    list[18] = 0;
    list[19] = 67;
    list[20] = 0;
    list[21] = 3;
    list[22] = 0;
    //--------------------------------------find kor name-----------------------------------------
    if (list[startPoint + 1] != 0) {
        String a = String.valueOf(Character.toChars(list[startPoint]));
        String b = String.valueOf(Character.toChars(list[startPoint + 1]));
        korName = a + b;
    } else {
        korName = String.valueOf(Character.toChars(list[startPoint]));
    }
    //--------------------------------------find kor weight---------------------------------------
    if (list[startPoint + 1] != 0) {
        korWeight = list[4];
    } else {
        korWeight = list[3];
    }
    //--------------------------------------find kor children amount------------------------------
    if (list[startPoint+3] != 0 && list[startPoint+1] == 0){
        for (int i = 3; i < list.length; i++){
            if (list[startPoint+i] == 0){
                break;
            }
            if (list[startPoint+i] != 0){
                temp++;
            }
        }
        Node[]korChildren = new Node[temp];
    }
    if (list[startPoint+1] != 0 && list[startPoint+4] != 0){
        for (int i = 4; i < list.length; i++){
            if (list[startPoint+i] == 0){
                break;
            }
            if (list[startPoint+i] != 0){
                temp++;
            }
        }
        Node[]korChildren = new Node[temp];
    }

    System.out.println(temp);
}

На этом этапе я застрял на том что создал массив правильного размера по кол-ву потомков, и не знаю как заполнять дерево дальше.


Ответы (0 шт):