Многокорневая древовидная структура - PullRequest
0 голосов
/ 24 декабря 2009

У меня есть данные, так что есть много родителей, каждый из которых имеет 0-n детей, где у каждого ребенка может быть 0-n узлов. Каждый узел имеет уникальный идентификатор (ключ). В конечном итоге, родители не связаны друг с другом. Кажется, что это был бы список деревьев, однако это кажется неточным. Я думал о присоединении к ним с пустышкой.

Мне нужно иметь возможность собрать список возникающих узлов:

  • от любого данного узла вниз (дочерние элементы)
  • от любого данного узла вниз (потомки), затем до корня (до конкретного родителя)
  • родительский элемент верхнего уровня любого данного узла (в операции O (n))
  • уровень дочернего элемента в дереве (в операции O (n))

Структура будет содержать 300 000 узлов.

Я подумал, что, возможно, мне удастся реализовать Список деревьев, а затем сохранить структуру поиска хеша, которая будет ссылаться на конкретное значение ключа, чтобы предоставить мне узел в качестве отправной точки.

Это логическая структура? Есть ли лучший способ справиться с этим? Мне это кажется грубым.

1 Ответ

2 голосов
/ 24 декабря 2009

Если вы заинтересованы в том, чтобы быстро найти корневой узел, вы можете подумать о создании дерева, в котором каждый узел указывает на другое дерево.

...