Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
29AHexNumber
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 15
#1

Заполнение дерева - C++

08.06.2010, 10:31. Просмотров 861. Ответов 0
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct tree
{
    char* str;
    tree** chs;
    int count_chs;
    int inited;
    void init(int lvl)
    {
        str=NULL;
        count_chs=1;
        int i,j,k;
        for(k=lvl;k!=0;k--)
            count_chs*=2;
        chs=new tree*[count_chs];
        for(i=0;i<count_chs;i++)
            chs[i]=new tree;
        inited=1;
    }
};
str - указатель на строку
chs - указатели на потомков
count_chs - количество потомков
inited - переменная признак: инициализировано дерево или нет
Дерево строиться таким образом, что у корневой вершины 2 потомка. Затем у каждого потомка еще 4 потомка и т.д.
И собственно сам код, который у меня получился:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int Insert(tree* t,char* str,int lvl)
{
    if(t->inited!= 1)
        t->init(lvl);
    if(t->str==NULL)
    {
        t->str=strdup(str);
        return 1;
    }
}
void main()
{
    int lvl=1;
    tree* t=new tree;
    char* str=new char[100];
    while(1)
    {
        gets(str);
        if(!strcmp(str,"!exit"))
            break;
        Insert(t,str,lvl);
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2010, 10:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение дерева (C++):

Заполнение дерева рандомно - C++
Всем привет. Подскажите пж как можно заполнить дерево рандомно, а не с клавиатуры: #include&lt;iostream&gt; using namespace std; struct...

Заполнение особого бинарного дерева - C++
Собственно класс бинарного дерева я прописал (хоть и криво, не в этом дело). Но метод вставки не подходит к поставленной задачи. А именно:...

Заполнение бинарного дерева из файла - C++
Есть задание. Используя классы , создать бинарное дерево. +готово, но пока через структуру-потом поправлю В узлах бинарного дерева...

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

Вывод бинарного дерева на экран в виде "дерева" - C++
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в красивом виде, возможно использование...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2010, 10:31
Привет! Вот еще темы с ответами:

Обход дерева - C++
Вот начал читать про деревья и способы их обхода (PreOrder, InOrder и PostOrder). С алгоритмами проблем нет, но видно, как бы это сказать...

По поводу дерева - C++
&quot;Дано дерево поиска, ключи которого – целые числа (положительные и отрицательные). Определить К-е отрицательное число, следующее за ...

обход дерева - C++
struct SAcson { int l,c; // строка, столбец float x; // заряд bool e; // возбуждающий или тормозящий }; struct SSinapc { ...

Обход дерева) - C++
Прога работает) но сказали, что нужно сделать отдельную функцию обхода дерева) можете помочь) или пример)) #include &lt;iostream.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru