Консультация № 81209
05.04.2007, 16:46
0.00 руб.
0 1 1
Здравствуйте уважаемые коллеги!
Задача состоит в следующем: имеется скелет трехмерной модели в виде списка костей, каждая из которых имеет id и id родительской кости.
Нужно создать структуру скелета в виде дерева с произвольной степенью исхода (каждая кость может иметь много потомков)

На портале нашел что-то типа этого:

template <class T>

struct tree_node
{
T item;
vector <tree_node <T>> sub_nodes;
};

struct tree
{
tree_node <T> * root;
};

Собственно вопрос: как можно реализовать обход этого дерева?

Обсуждение

Неизвестный
05.04.2007, 21:51
общий
это ответ
Здравствуйте, Ross!
Ответ: Число пересечении отрезков ломанной плюс 1

Не проверял данный пример
Obhod( * AdresVhoda)
{

vector <T>::iterator m_TekNod;
m_TekNod= AdresVhoda.begin();
while (m_TekNod!= AdresVhoda.end())
{
Obhod( m_TekNod.sub_nodes );

}
.. ..
}
Но данный метод не соответствует требованием

Смотри пример ниже
Думаю подойдет



Приложение:
class Kosti{public:int ID,ID_Parent;int Dlina; // какие нибудь описание кости /**/int SetDATA();public: Kosti(void); Kosti(int , int);public: ~Kosti(void);};Kosti::Kosti(void){ ID_Parent=0; ID=0;}Kosti::Kosti(int ID_M, int ID_P ){ ID_Parent=ID_P; ID=ID_M; SetDATA(); // не обезательно // заполняет остытьные данные }Kosti::~Kosti(void){ /* оставь пустым */}int Kosti::SetDATA(){/* твоё */ cin>>Dlina; //меё return 0;}class Telo{ vector <Kosti> m_vTelo; vector <Kosti>::iterator m_vKosti;int AddKosti(int ID_M,int ID_P);Kosti GetKosti(int ID_M); void GetTELO();public: Telo(void);public: ~Telo(void);};Telo::Telo(void){}Telo::~Telo(void){}int Telo::AddKosti(int ID_M, int ID_P){ Kosti Temp(ID_M, ID_P); m_vTelo.push_back(Temp);return 0;}Kosti Telo::GetKosti(int ID_M){ int i=0;m_vKosti=m_vTelo.begin(); while (m_vKosti!=m_vTelo.end()) { i++; if (m_vKosti->ID=ID_M) { //cout<<m_vKosti->ID; return m_vTelo[i]; } }return Kosti();}void Telo::GetTELO(){ m_vKosti=m_vTelo.begin(); while (m_vKosti!=m_vTelo.end()) { cout<<m_vKosti->ID; cout<<m_vKosti->ID_Parent; cout<<m_vKosti->Dlina; }}
Форма ответа