структура данных для Семейного древа - PullRequest
6 голосов
/ 13 декабря 2011

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

Было бы хорошо, если бы можно было найти некоторую структуру данных из c ++ STL.

Требуются только идеи.

Ответы [ 2 ]

4 голосов
/ 13 декабря 2011

A graph как нельзя лучше подходит для этого, и я предлагаю вам использовать Boost.

Обратите внимание, что построение генеалогического дерева может оказаться сложным, как показано этим вопросом .

В противном случае std не определяет структуру данных графа. А поскольку график, очевидно, лучше всего подходит для вашей ситуации, я предлагаю вам либо реализовать собственную версию, либо использовать Boost.

3 голосов
/ 13 декабря 2011

Это домашнее задание?

Даже если это называется «Дерево», это плохая структура: представьте себе двух братьев, которые женятся на двух сестрах.

Лучше всего подойдет общая структура графа (дерево представляет собой особую форму графа). Край будет нести отношения. Тогда вы можете запустить алгоритм поиска пути (как старый добрый dijkstra) только на ребрах, которые представляют кровное родство.

И boost :: graph - очень хорошая библиотека.

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