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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Татьяна_19
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 5
#1

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

10.06.2014, 22:02. Просмотров 140. Ответов 0
Метки нет (Все метки)

Здравствуйте!пишу функцию для удаления узла из бинарного дерева..
если узел не имеет потомков или имеет один потом то удаляет нормально, а если имеет два потомка то вылетает программа. не могу найти ошибку (С++)
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
node *delet(node *root,int nomer,char avtor[25],char nazvanie[25],int god,int kolichestvo){
    node *P=new node, *v=new node;
    if (root)
        //cout << "net takou knigi" << endl;
     if(nomer==root->nomer&&!strcmp(avtor,root->avtor)&&!strcmp(root->nazvanie,nazvanie)&&god==root->god)
     {
        if(kolichestvo>=root->kolichestvo){
            if (!root->r)
                root = root->l;
            else
                if (!root->l) root = root->r;
                else{
                    v = root->l;
                    while (v->r->r)
                        {v=v->r;
                    root->nomer=v->r->nomer;
                    strcpy(root->avtor,v->r->avtor);
                    strcpy(root->nazvanie,v->r->nazvanie);
                    root->god=v->r->god;
                    root->kolichestvo=v->r->kolichestvo;
                    P = v->r; 
                    v->r = v->r->l;}
                }
                free(P);
        }
        else
            root->kolichestvo-=kolichestvo;
     }
     else if (god < root->god) root->l = delet(root->l,nomer,avtor,nazvanie,god,kolichestvo);
    else if (god >= root->god) root->r = delet(root->r,nomer,avtor,nazvanie,god,kolichestvo);
    return root;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 22:02     Удаление узла из бинарного дерева
Посмотрите здесь:

Удаления узла из бинарного дерева поиска - C++
Уже довольно много времени убил на эту задачу, теорию понимаю, на практике реализовать никак не получается. Помогите пожалуйста написать...

Функция: удаление узла дерева со всеми потомками - C++
подскажите код функции которая удаляет элемент дерева со всеми его потомками NODE *SEARCH(char *key, NODE *root) { NODE...

Удаление бинарного дерева по слоям - C++
вот задачка такая встала и ни че в голову не приходит. как будет выглядеть функция чтоб удаляла бинарное дерево по слоям? плиззз...

Освобождение памяти, удаление бинарного дерева - C++
Добрый день. Написал программу, которая ищет в файле неиспользуемые переменные, т.е. те, которые объявлены. Всё в общем-то работает, но...

Удаление элемента из сбалансированого бинарного дерева - C++
Задание: написать программу, которая создает сбалансированное бинарное дерево, написать процедуру, которая удалит все парные элементы...

Удаление узлов из бинарного дерева до даты, введенной с клавиатуры - C++
В общем, такой вопрос. Используя классы, создать упорядоченное бинарное дерево, которое описывает справочник файлов в файловой системе....

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

Вывод бинарного дерева на экран в виде "дерева" - C++
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в красивом виде, возможно использование...

Как сгенерировать ключ для узла дерева? - C++
В C# для создания сквозной нумерации текстовых заметок можно было просто объявить целую static-переменную в описании класса заметки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru