Хороший способ заполнить треугольник чисел в древовидной структуре данных - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующие данные в моем входном файле:

1
3 2
5 6 4
7 9 8 10

Связь между данными следующая:

3 и 2 являются дочерними элементами 1, а 3 имеют детей 5 , 6, в то время как у 2 есть дочерние элементы 6 и 4.

Итак, это треугольная структура, похожая на пирамиду.

Я написал класс под названием Tree в моем код, а у дерева есть объект класса TriangleNode для дерева root:

public class TriangleNode { 
    public int data; 
    public TriangleNode leftChild;
    public TriangleNode rightChild;

    public Node(int item) 
    { 
        data = item; 
        leftChild = null;
        rightChild = null;
    } 
} 

Что мне нужно сделать конкретно, так это прочитать треугольник и заполнить все данные в мою собственную структуру, описанную выше. Было бы хорошо не дублировать объекты, поэтому, если два родителя разделяют ребенка в треугольнике, сделайте что-то вроде этого (возможно). Но мне нужно сделать это для всего файла.

tree.node.left.right = new TriangleNode(2);
tree.node.right.left = tree.node.left.right;

Может быть, кто-нибудь может помочь мне с эффективным способом заполнить мою структуру данными? Я посмотрел здесь и не нашел хорошего способа сделать это. Заранее спасибо!

1 Ответ

0 голосов
/ 26 мая 2020

Было бы не только хорошо не дублировать объекты, но, скорее всего, это тоже необходимо, потому что, если бы один из этих объектов каким-то образом изменился, вам нужно будет убедиться, что другой тоже изменился.

Итак Я бы предложил хранить коллекцию данных и обращаться к ее членам из вашего класса TriangleNode вместо создания двух отдельных идентичных объектов (по одному для каждого родителя в двух разных родительских узлах).

...