@Axretit

Как реализовать дерево на основе связного списка?

Нужно реализовать дерево на основе связного линейного списка. Насколько это возможно?
  • Вопрос задан
  • 459 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Вообще, дерево и список не изоморфны друг другу. В дереве же есть иерархия. Дерево нельзя реализовать с помощью списка (одного).

Возможно, вам надо хранить детей каждой вершины в виде связного списка (тогда у вас будет куча списков). Еще, популярный подход (фактически делающий то же самое) - это хранить в каждой вершине ссылку/указатель на первого ребенка и на следующего брата. Так все списки будут перемешаны в одну большую структуру. Но тут, правда, в отличии от связного списка, все равно есть 2 типа ссылок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
includedlibrary
@includedlibrary
У каждого элемента списка может быть либо один последующий, либо ноль. Вероятно, вам нужно на указателях реализовать.

Если уж прямо нужно на списках, то можно нумеровать элементы списка и в каждом хранить потомков.
Как-то так:
список:
61db03b5f393d494297825.png
  1. [2, 3]
  2. [4, 5]
  3. []
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Дерево на основе связного списка это вообще первое что приходит в голову, когда думаешь, как реализовывать дерево. Правда это не обычный последовательный связный список, а иерархический.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы