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

Построение бинарного дерева на основе не бинарного - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Текстовые файлы в С++ http://www.cyberforum.ru/cpp-beginners/thread296019.html
Помогите написать программу которая определяет количество слов в каждой строке, и нужно сжать каждую строку, удалив все лишние пробелы
C++ Программа линейной и разветвленной структуры есть пара задачек. у меня началась практика нужна реальная помощь или сикир-башка 1. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC. 2. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное.... http://www.cyberforum.ru/cpp-beginners/thread296002.html
C++ Программы линейной и разветвленной структуры
есть пара задачек. у меня началась практика нужна реальная помощь или сикир-башка 1. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC. 2. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное....
C++ Программы линейной и разветвленной структуры в си++
есть пара задачек. у меня началась практика нужна реальная помощь или сикир-башка 1. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC. 2. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное....
C++ Используя очередь, установить, сбалансирован ли по круглым скобкам записанный в файле текст http://www.cyberforum.ru/cpp-beginners/thread295979.html
Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать номера их позиций в тексте, упорядочив пары номеров по возрастанию номеров позиций: а) закрывающих скобок (например, для текста a+(45-f(x)*(b-c)) надо напечатать: 8 10; 12 16; 3 17); б) открывающих скобок (например, для текста a+(45-f(x)*(b-c)) надо напечатать: 3 17; 8 10; 12 16);Задание дополнить выводом в...
C++ Очистить поток от EOF Как очистить вх. поток от символа конца строки? Вот например нужно мне считать два куска текста (с пробелами и переводами каретки) в два символьных массива # include <iostream> using namespace std; int main() { int n=127; char ch1; char ch2; подробнее

Показать сообщение отдельно
lasbat
2 / 2 / 0
Регистрация: 06.05.2010
Сообщений: 18
23.05.2011, 22:51     Построение бинарного дерева на основе не бинарного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
struct node {
        int key;
        node *parent;// предок
        node *left;//левый потомок
        node *right;//правый
}
 
 
void deep_walk(node *root){//указатель на корень *root
        stack=create_stack();//
stack_push(stack, root);//помещаем в стек корень дерева
while((node *n=stack_pop(stack))!= NULL){// пока не пройдем дерево до конца
        do{
                printf("%c",n->key);//выводим значение корня на экран
 
                if(n->left != NULL){//если есть левый потомок
                        if(n->right != NULL)//и правый
                                stack_push(stack, n->right);//помещаем в стек правого
                        n=n->left;//идем влево по дереву
                }
                else 
                        N=n->right;//иначе вправо
        }
        while(n!=NULL)//пока дерево не кончится
}
}
как-то так

Добавлено через 10 минут
вобщем, тебе надо по обычному дереву сделать обход, и получить стек, то есть массив элементов, и по нему построить дерево бинарного поиска

Добавлено через 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
24
25
26
27
28
29
struct Ttree
{
    int inf;
    Ttree *left;
    Ttree *right;
};
void create(int n, Ttree *&tr)
{
    
    int a;
    if(n>0)
    {
        tr=new Ttree;
        in>>a;
        tr->inf=a;
        tr->left=NULL;
        tr->right=NULL;
        int nl=n/2;
        int nr=n-nl-1;
        create(nl,tr->left);
        create(nr,tr->right);
    }
    
}
int main()
{
        Ttree *tree=NULL;//задаем пустое дерево
        create(n,tree);// n - количество элементов
}
 
Текущее время: 06:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru