У меня есть данные, так что есть много родителей, каждый из которых имеет 0-n детей, где у каждого ребенка может быть 0-n узлов. Каждый узел имеет уникальный идентификатор (ключ). В конечном итоге, родители не связаны друг с другом. Кажется, что это был бы список деревьев, однако это кажется неточным. Я думал о присоединении к ним с пустышкой.
Мне нужно иметь возможность собрать список возникающих узлов:
- от любого данного узла вниз (дочерние элементы)
- от любого данного узла вниз (потомки), затем до корня (до конкретного родителя)
- родительский элемент верхнего уровня любого данного узла (в операции O (n))
- уровень дочернего элемента в дереве (в операции O (n))
Структура будет содержать 300 000 узлов.
Я подумал, что, возможно, мне удастся реализовать Список деревьев, а затем сохранить структуру поиска хеша, которая будет ссылаться на конкретное значение ключа, чтобы предоставить мне узел в качестве отправной точки.
Это логическая структура? Есть ли лучший способ справиться с этим? Мне это кажется грубым.