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

Удаление вершины бинарного дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибки в программе http://www.cyberforum.ru/cpp-beginners/thread622378.html
Мне необходимо реализовать алгоритм сортировки каскадным слиянием со специальным распределением. Я написал программу: #include <stdio.h> #include <conio.h> int main() { int a={12,4,0,47,-32,200,14,7890,-1,33};
C++ iostream пишу в VS 2010 подключаю библиотеку: #include <iostream> в тебе программы подчеркивает cout, cin и endl в ошибках пишет идентификатор неопределен. помогите, в чем дело? http://www.cyberforum.ru/cpp-beginners/thread622369.html
Задача из книги Дейтел Как программировать на C++ C++
Друзья! Я начал не так давно заниматься программированием. Имелся опыт с паскалем,но решил изучать С++. Начал изучение по книге Дейтелов. Дошел до 5 главы,и тут начались затруднее с решением задач. Задача 5.19 Рассчитайте значение pi как сумму бесконечного ряда
Добавление элементов бинарное дерево C++
Всем добрый день, не выручит кто нибудь алгоритмом который заполняет двоичное дерево поиска
C++ решение нелинейного уравнения. Метод Ньютона http://www.cyberforum.ru/cpp-beginners/thread622302.html
Здравствующие, помогите, пожалуйста, перенести программу с Делфи на С++, т.к. на ни на Си, ни на С++ не работала. function f(x:single):single; begin Result:=Sin(x)+x-1; end; //Производная function df(x:single):single; begin Result:=cos(x)+1;
C++ Решение уравнения с используя функцию Используя пользовательскую функцию (одну для двух сумм) рассчитать по формуле: подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.07.2012, 20:34     Удаление вершины бинарного дерева
Маленько погорячился с обычным обходом в глубину. Во-первых, нужен обход в ширину, а во-вторых, обратный (т.е. с нижних уровней к верхним), чтобы всё корректно удалилось. По крайней мере, я пришёл к такому выводу, возможно, есть способ проще. Вот такой код у меня вышел, на основе очереди и стека:
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
void BinaryTree::delete_tree()
    std::queue<BinaryTreeNode *> nodes_queue;
    std::stack<BinaryTreeNode *> nodes_stack;
    TreeNode *node = m_root;
    
    nodes_queue.push(node);
    
    while (!nodes_queue.empty())
    {
        node = nodes_queue.front();
        
        if (node->left != 0)
            nodes_queue.push(node->left);
        
        if (node->right != 0)
            nodes_queue.push(node->right);
        
        nodes_queue.pop();
        nodes_stack.push(node);
    }
    
    while (!nodes_stack.empty())
    {
        delete nodes_stack.top();
        
        nodes_stack.pop();
    }
}
 
Текущее время: 18:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru