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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание внешних модулей в С++ http://www.cyberforum.ru/cpp-beginners/thread142436.html
Как создать внешний файл с функциями наподобие модулей в Pascal? Скажите пожалуйста...
C++ Найти среднее арифметическое неотрицательных элементов матрицы Найти среднее арифметическое неотрицательных элементов матрицы, а также подсчитать, сколько таких элементов в каждой отдельно взятой строке матрицы. http://www.cyberforum.ru/cpp-beginners/thread142395.html
C++ Удалить книги заданного автора
Необходимо разработать программу для создания и работы с двусвязным списком, состоящим из структур. Структура содержит название книги, автора, год издания. Необходимо удалить книги заданного автора. и проблема возникла с функцией удаления, вот что есть #include <stdio.h> #include <conio.h> #include <string.h> struct bibl
C++ Поиск элемента в одномерном массиве.
задан целочисленный одномерный массив. найти минимальный элемент этого массива и поставить его в начало.
C++ вставление строк и пара вопросов http://www.cyberforum.ru/cpp-beginners/thread142372.html
вычислить и вывести на экран в виде таблицы значение функции F на интервале от Xнач до Xконч с шагом Dx задана система: a*(x^2)+b при х-1<0 и b-x не равно 0 F: (x-a)/x при x-1>0 и b-x=0 x/c в остальных случаях где a,b,c -действительные числа. Фунцкия F должна принимать действительные значения,если выражения (Ац ИЛИ Вц)МОД2 (Вц И Сц)
C++ Наименьший элемент массива на первое место... Помогите плиз, нужен код задачи на C++: Надо наменьший элемент из массива поместить на первое место, наименьший из оставшихся на последнее, наименьший из оставшихся, оставшихся на второе, предпоследнее и так до середины массива. У меня есть код на C#: int r = 0; int ii = 1; int a = new int{123, 345, 234, 111, 877, 5656, 4553, 3445, 987, 876}; ... подробнее

Показать сообщение отдельно
29AHexNumber
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 15

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

08.06.2010, 10:31. Просмотров 841. Ответов 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);
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru