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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить третий вектор на основе двух по правилу http://www.cyberforum.ru/cpp-beginners/thread1205000.html
Написать программу, которая для двух заданных векторов X и Y одинаковой длиной n сформирует и выведет на экран вектор R той же длины,элементы которого определяются как ri= система Xi+Yi, если Xi>Yi Xn-1-i +Yn-1-i, если Xi<Yi, Xi+Yn-1-i, иначе
C++ Даны вещественные массивы F[4][5], A[4][5] Даны вещественные массивы F, A. Определить значения массивов X,V, где X=максимальному отрицательному значению i-й строки массива F, V=максимальному отрицательному значению i-й строки массива A. Значение переменной i изменяется от 0 до 3. http://www.cyberforum.ru/cpp-beginners/thread1204996.html
C++ Даны вещественные массивы A[8], B[8], C[8]
Даны вещественные массивы A, B, C. Определить значения вещественного массива D. В первую строку массива D записать значения массива A, во вторую - массива В, а в 3-ю - массива С.
Разделить строки по 20 символов, либо по точкам C++
Задан текстовый файл f1. Сформировать файл f2 из файла f1, разбивая его строки так, чтобы каждая строка оканчивалась точкой, либо содержала 20 символов если среди них нет точки.
C++ Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах http://www.cyberforum.ru/cpp-beginners/thread1204981.html
Увожаемые форумчане! Вдруг у кого есть похожая программа на C++ просьба скинуть за небольшое вознаграждение :) Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах. Каждая запись – структура с полями: • Наименование товара • Цена • Количество на складе Интерфейс должен позволять: • Вносить новые записи • Просматривать содержимое файла
C++ Передача перегруженной функции как аргумента Есть 3 метода: static int readInteger() { double temp = readDouble(); int result = temp; if (result != temp) throw new invalid_argument("Input value isn`t correct."); else return result; } static int readInteger(int defaultValue) { подробнее

Показать сообщение отдельно
Татьяна_19
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 5

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

10.06.2014, 22:02. Просмотров 142. Ответов 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru