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

Удаление элемента из бинарного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ошибка Run-Time Check Failure #2 http://www.cyberforum.ru/cpp-beginners/thread1498347.html
под конец програмки освобождал память и ошибка пропадала но происходило аварийное завершение ( подскажите где проблема . class publication { protected: string name; float price; public:...
C++ Посоветуйте книгу по Си++ Добрый вечер. Порядка года назад я очень хотел изучить языки Си и Си++, но не знал о них вобще ничего. Поставив себе эту цель, я начал грызть литературу по данным языкам. Сперва прочел книгу Лафоре... http://www.cyberforum.ru/cpp-beginners/thread1498318.html
C++ Не могу сдвинуться с места в изучении C++; Не знаю, как программировать эффективно
Я изучаю C++ уже больше года, но чувствую, что до сил пор не умею им пользоваться. Большая часть сил тратится на такие тривиальный задачи, как создание функций работы с файлами (возвратить N-ную...
Как часто приходится манипулировать директивами препроцессора для написания программ на Си++? C++
Как часто приходится манипулировать директивами препроцессора и вобще использовать их для написания программ на Си++?
C++ Безопасная работа с памятью в OpenMP С++ http://www.cyberforum.ru/cpp-beginners/thread1498291.html
Добрый день. Вопрос связан с тем как можно добавлять элементы к общему динамическому массиву в параллельных потоках. По сути задачи приходится к созданному многомерному vector добавлять новые...
C++ Генерация и проверка серийного номера, как реализовать? Мне нужно, скажем так, защитить программу - написать функцию генерации и проверки уникального серийного номера для каждой копии программы. Пока не совсем понимаю, в каком направлении копать. Я знаю,... подробнее

Показать сообщение отдельно
МарияБелая
2 / 2 / 0
Регистрация: 13.03.2014
Сообщений: 79

Удаление элемента из бинарного дерева - C++

13.07.2015, 21:06. Просмотров 1174. Ответов 1
Метки (Все метки)

Ругается компилятор в Visual Studio при выполнении кода удаления элемента, а именно в том месте, где нужно удалить элемент с двумя дочерними элементами( в четвертом условии). Ошибка такая: "Unhandled exception at 0x0015483B in BinaryTree.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x001C2FFC)." Что исправить?
Код:
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
Tree* DeleteNode(Tree* node, int ch)
{
    /*Если удаляемый элемент находится в корне текущего поддерева и имеет два дочерних узла,
    то нужно заменить его минимальным элементом из правого поддерева
    и рекурсивно удалить минимальный элемент из правого поддерева.*/
 
    if (node == NULL)
        return node;
 
    if (ch < node->data)
    {
        node->left = DeleteNode(node->left, ch);
    }
    else if (ch > node->data)
    {
        node->right = DeleteNode(node->right, ch);
    }
    else if (node->left != NULL && node->right != NULL)
    {
        node->data = Minimum(node->right)->data;
        node->right = DeleteNode(node, node->right->data);
    }
    else if (node->left != NULL)
    {
        node = node->left;
    }
    else
    {
        node = node->right;
    }
 
    return node;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru