С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 5
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте!пишу функцию для удаления узла из бинарного дерева..
если узел не имеет потомков или имеет один потом то удаляет нормально, а если имеет два потомка то вылетает программа. не могу найти ошибку (С++)
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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2014, 22:02
Ответы с готовыми решениями:

Удаление узла из бинарного дерева
всем доброго времени суток! имеется бинарное дерево, которое хранит в себе элементы с данными в...

Удаление узла из бинарного дерева
всем доброго времени суток. помогите пожалуйста с удалением элемента из дерево, а именно с...

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

Удаление Узла Бинарного Дерева.
Добрый День.Возникла проблема с реализацией части функции контейнера для удаления элемента с двумя...

0
10.06.2014, 22:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 22:02
Помогаю со студенческими работами здесь

Удаление Узла бинарного дерева
Добрый вечер. Имеем Бинарное дерево поиска. При удалении некоторого узла . возникают три...

Удаление узла и корня бинарного дерева
struct Tree { int value; Tree *l, *r; }; void add(Tree *&amp;obj, int value) { if (obj ==...

Удаление узла бинарного дерева, проблема с функциями, адресацией
код: #include &lt;cstdlib&gt; #include &lt;iostream&gt; typedef struct tree{ // обьявляем тип char data;...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru