Какая структура данных лучше всего представляет эти данные? - PullRequest
1 голос
/ 31 июля 2009

alt text

Это список списков или просто куча деревьев (лес)?

Ответы [ 2 ]

1 голос
/ 31 июля 2009

Лучшая структура данных - это дерево (как вы упомянули, лес, поскольку их здесь 2). Однако S-выражения могут легко представлять деревья - а S-выражения могут представлять списки списков, которые эквивалентны деревьям.

Вы можете просто принять соглашения для деревьев в виде списка, например, первый элемент является текущим узлом, а следующие элементы являются дочерними. Используя это соглашение, первое дерево будет представлено как:

(a1 (a1 (a11 (a111 a112 a113) a112) a12 a13))

Второй

(a2 (a21 a211) (a22 a221) (a23 (a231 a2311) (a232 a2321)))

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

Если вы не догадались, бывший программист на Лиспе:)

1 голос
/ 31 июля 2009

Зависит от того, что вы хотите с ним делать. List<LinkedListTree> может работать в общем случае. Если вам нужно представить непересекающиеся множества (например, алгоритм MST Крускала), вы можете посмотреть другую структуру данных .

...