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

Бинарные деревья: удалить те листья, у которых нет братьев - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генерация случайных чисел http://www.cyberforum.ru/cpp-beginners/thread1182208.html
Мне нужно заполнить множество матриц числами 0 или 1. Для этого использую функцию rand. Но мне необходима совсем случайная последовательность,а то матрицы получаются более или менее одинаковые.
C++ Целочисленная арифметика: найти на отрезке [n, m] натуральное число, имеющее наибольшее количество делителей Найти на отрезке натуральное число, имеющее наи*большее количество делителей. http://www.cyberforum.ru/cpp-beginners/thread1182191.html
C++ в квадратной матрице поменять местами первый и четвертый столбцы и вывести их
...
Не работает программа C++
Используя массив типа структура (с 6-10 элементов) составить программу, с помощью которой можно ввести в память компьютера данные из предметной области и получить характеристики фотоаппарата. Не...
C++ Табулирование http://www.cyberforum.ru/cpp-beginners/thread1182188.html
Написать программу вывода таблиц по формуле Y = cos(x)+(A/B) через 1 градус в три колонки (х изменяется от 0 до alfa). alfa, A, B - переменные, нужно взять в пользователя. Обратите внимание на то,...
C++ Целочисленная арифметика: произведение n первых нечетных чисел равно p, сколько сомножителей взято? Произведение n первых нечетных чисел равно p. Сколько сомножителей взято? Если введенное число n не является указан*ным произведением, сообщить об этом. подробнее

Показать сообщение отдельно
FC_DK
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 62

Бинарные деревья: удалить те листья, у которых нет братьев - C++

20.05.2014, 15:40. Просмотров 176. Ответов 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
33
34
35
36
37
38
39
40
TNode* deleteTree(TNode * rootTree,int key){
    TNode * p;
    if(rootTree==NULL){
        return rootTree;
    }
    if(rootTree->inf<key){
        rootTree->right=deleteTree(rootTree->right,key);
        return rootTree;
    }
    else if(rootTree->inf>key){
        rootTree->left=deleteTree(rootTree->left,key);
        return rootTree;
    }
    if(rootTree->inf==key){
        if(rootTree==rootTree->right){
            delete rootTree;
            return NULL;
        }
        else if (rootTree->left==NULL){
            p=rootTree->right;
            delete rootTree;
            return p;
        }
        else if(rootTree->right==NULL){
            p=rootTree->left;
            delete rootTree;
            return p;
        }
        else{
            p=rootTree->right;
            while(p->left){
                p=p->left;
            }
            p->left=rootTree->left;
            p->right=rootTree->right;
            delete rootTree;
            return p;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru