Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> эн-мерное дерево 
V
    Опции темы
toxx
Дата 26.3.2010, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 2
Всего: 13



Заполняю эн-мерное дерево
Код


struct Tree
{
    int d;
    int size; // количество ветвей
    vector<Tree *> Trees;// массив указателей на сыновей
    void AddTree(Tree* node)//добавление новой вершины
    {
        Trees.push_back(node);
    }
};

Tree* first(int );
Tree* insNODE(Tree* ,int );
int main()
{
    Tree* root=first(10);
    insNODE(root,21);
    insNODE(root,22);
    insNODE(root,31);
    insNODE(root,32);
    insNODE(root,41);
    insNODE(root,42);
    insNODE(root,43);
    return 0;
}
Tree* first(int d)
{
    Tree *pv=new Tree;
    pv->d=d;
    pv->size=rand()/10000+1;
    return pv;
}
Tree* insNODE(Tree* root,int d)
{
    Tree *pv=root;
    Tree *node=new Tree;
    if(root->Trees.size()==3) 
    {
        insNODE(pv->Trees[root->Trees.size()-2],d);
        return pv;
    }
    else
    {
        pv->AddTree(node);
        node->d=d;
        node->size=rand()/10000+1;
        pv->Trees[pv->Trees.size()-1]=node;
    }
    return pv;
}




Никак не могу понять, как сделать так чтобы когда все вершины в дереве заполнены( т.е. pv->size==pv->Trees.size() )
переходил к заполнению следующей , мб чтото намудрил помогите разобраться.Спасибо 

Извините, я наверно плохо объяснил что у меня не получается.
Я заполняю эн-мерное дерево
Код


Tree* first(int d)
{
    Tree *pv=new Tree;
    pv->d=d;
    pv->size=rand()/10000+1;
    return pv;
}
Tree* insNODE(Tree* root,int d)
{
    Tree *pv=root;
    Tree *node=new Tree;
    if(root->Trees.size()==3) 
    {
        insNODE(pv->Trees[root->Trees.size()-2],d);
        return pv;
    }
    else
    {
        pv->AddTree(node);
        node->d=d;
        node->size=rand()/10000+1;
        pv->Trees[pv->Trees.size()-1]=node;
    }
    return pv;
}




pv->size это количество ветвей(задаётся случайно) которое которое должно выходить из вершины
так вот я хочу чтобы допустим в вершине 3 вершины, нужно чтобы заполнились эти 3 вершины, далее
допустим в 1м поддереве 2 вершины нужно чтобы эти 2 вершины заполнились и так далее...
Никто наверно не понял ничего, вот и не отвечает никто... 

Это сообщение отредактировал(а) toxx - 27.3.2010, 11:32
PM MAIL   Вверх
Peter
Дата 27.3.2010, 14:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: -1
Всего: 1



Цитата(toxx @  26.3.2010,  21:49 Найти цитируемый пост)
Никто наверно не понял ничего

Наверное, ты сам не понял, чего хочешь. После заполнения очередной вершины как надо продолжать заполнение - идти "в глубину" или "в ширину"? (Т.е. на следующий уровень спускаться или проверять текущий уровень?)
Делается это вначале на бумажке. Задай максимальную размерность (количество "сыновей") вершины не 10000, а 3. Затем вручную забей в дерево штук 20 значений. Будет у тебя 20 картинок последовательных состояний дерева. А тогда и соображай, как это записать в программе.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
toxx
Дата 27.3.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 2
Всего: 13



Цитата(Peter @ 27.3.2010,  14:55)
Цитата(toxx @  26.3.2010,  21:49 Найти цитируемый пост)
Никто наверно не понял ничего

Наверное, ты сам не понял, чего хочешь. После заполнения очередной вершины как надо продолжать заполнение - идти "в глубину" или "в ширину"? (Т.е. на следующий уровень спускаться или проверять текущий уровень?)
Делается это вначале на бумажке. Задай максимальную размерность (количество "сыновей") вершины не 10000, а 3. Затем вручную забей в дерево штук 20 значений. Будет у тебя 20 картинок последовательных состояний дерева. А тогда и соображай, как это записать в программе.

Сделал как вы сказали=)Нарисовал теперь знаю чего хочу.


Это сообщение отредактировал(а) toxx - 28.3.2010, 02:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.