Показать сообщение отдельно
  #2  
Старый 05.11.2008, 14:00
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

1) структура (если отойти от множеств) - это всем знакомое [генеалогическое] дерево, где множество корней (узлы уровня 0) - это предки всех детей. Условия а) и б) связывают узлы одним ребром (по терминологии графов), т.е. уровень (терминология TreeView) родителя на 1 больше уровня ребёнка. Из условия с) следует, что всегда есть путь от А к Б через В, причём получается, что сначала к узлам В причисляются ближайшие к А и Б, потом более отдалённые, в итоге весь промежуточный путь от А к Б - это узлы В. Итак на уровне 0 будет несколько ветвей (деревьев). Берёте первое дерево и все узлы на нём - родственники между собой. Т.е. неродственники - только те, у которых разные предки уровня 0.

2) Как сформировать дерево? Один из способов - завести базу данных. Стандартные поля: номер узла, номер узла родителя (если родителя нет, то null), название (имя). Далее селекты.
Ответить с цитированием