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

Обход бинарного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задали массив действительных чисел х1, х2, ..., хn. Упорядочить элементы этого массива по убыванию. http://www.cyberforum.ru/cpp-beginners/thread833825.html
Всем привет ! Прошу помощи в задании. Учить С++ только начал, поэтому прошу помощи у Вас. Вот условие: Задали массив действительных чисел х1, х2, ..., хn. Упорядочить элементы этого массива по убыванию. За ранее благодарен.:)
C++ Копирование из консоли в файл Нужно все, что вывелось в консоли (разные вычисления) записать в таком же виде в текстовый файл. Есть ли какое-нибудь решение покороче, чем после каждого оператора printf писать те же данные, но в fprintf? http://www.cyberforum.ru/cpp-beginners/thread833797.html
Точки в системе координат. Visual Studio C++
Нужно определить принадлежность этой области точки, координаты которой вводятся с клавиатуры. Вот что-то похожее нашел, но там выбивает или только координаты точки на оси х или только на оси у... #include <iostream> using namespace std; int main()
Работа с текстовыми файлами. Преобразовать текст, записав ключевые слова прописными буквами, а остальные строчными C++
Доброго времени суток всем! Помогите пожалуйста решить задачу. В одном файле дан исходный текст программы на языке C, в другом - словарь ключевых слов этого языка. Преобразовать текст, записав ключевые слова прописными буквами, а остальные строчными.
C++ Падение Release http://www.cyberforum.ru/cpp-beginners/thread833757.html
Всем привет. Есть код по конвертированию float в строку char* #include <sstream> using std::stringstream; #include <iostream> using std::cout; using std::endl; using std::cin; char* conv_f_to_s(float num){ stringstream iostr;
C++ Повторения чисел Помогите пож найти кол-во повторений чисел в строке. Пример: дана строка 12344531 вывод 1-2 2-1 3-2 4-2 5-1 При создании массива используйте пож vector. Массив заполняется случайными числами. подробнее

Показать сообщение отдельно
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
10.04.2013, 18:17     Обход бинарного дерева
melo16, ну тут удаление, добавление, обход в глубину, и вывод.

Добавлено через 1 минуту
melo16, кстати, там кажется не все учтено в удалении, вот недавно заново писал, тут все варианты учтены

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
void deleteTree(Tree *Ptr, int const value)
        {
            Tree *parent = NULL;
            Tree *removed = NULL;
 
            while(Ptr != NULL && Ptr -> data != value)
            {
                parent = Ptr;
                if(Ptr -> data > value)
                    Ptr = Ptr -> left;
                else
                    Ptr = Ptr -> right;
            }
 
            int peremen = Ptr -> data;
 
            if(root != NULL)
            {
                Tree *child = NULL;
                if(Ptr -> left == NULL || Ptr -> right == NULL)
                {
                    /*случай когда один ребенок*/
                    if(Ptr -> left == NULL)
                        child = Ptr -> right;
                    else
                        child = Ptr -> left;
 
                    /*усли удаляем корень с одним потомком*/
                    if(root -> data == value)
                        root = child;
                    else
                    {
                        if(parent -> left == Ptr)
                            parent -> left = child;
                        else
                            parent -> right = child;
                    }
 
                    removed = Ptr;
                }
                else            /*if(Ptr -> left != NULL || Ptr -> right != NULL)*/
                {
                    /*случай когда 2 ребенка*/
                    Tree *mostLeft = Ptr -> right;
 
                    while(mostLeft -> left != NULL)
                    {
                        parent = mostLeft;
                        mostLeft = mostLeft -> left;
                    }
 
                    if(root -> data == value){
                        removed = mostLeft;
                        parent = root;
 
                        if(parent -> left == mostLeft)
                            parent -> left = NULL;
                        else
                            parent -> right = NULL;
 
                        Ptr -> data = mostLeft -> data;
                    }
                    else
                    {
                        removed = mostLeft;
 
                        if(Ptr -> left == mostLeft)
                            Ptr -> left = NULL;
                        else
                            Ptr -> right = NULL;
 
                        Ptr -> data = mostLeft -> data;
                    }
                }
            }
 
            delete removed;
        }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru