Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Числовое значение string в int https://www.cyberforum.ru/ cpp-beginners/ thread2248190.html
Привет! Такая задача: задается строка, из неё нужно среди всех значений, идущих до введённой точки вычленить все цифры и составить из них наибольшее число. Я завёл массив из 10 элементов, и решаю...
Поле динамический массив состоящий из объектов-потомков класса C++
Всем привет, интересует такой вопрос: Есть базовый класс, от которого наследуется другие классы, можно ли в качестве поля базового класса использовать динамический массив, состоящий из...
C++ Перевод программы из Pascal в C++
Добрый вечер, нужна помощь! Буду благодарен. Сама задача звучит так : Найти значение выражения (2*5!+3*8!) / (6!+4!) где n! означает факториал числа п (n! = 1 • 2 • ... • n). (Определить функцию...
C++ Цикл while без тела Доброго времени суток. Искал быструю сортировку массива из чисел типа int. Наткнулся на такое: void quick_sort( int * start, int * en ) { if( start != en ) { int * left = start;... https://www.cyberforum.ru/ cpp-beginners/ thread2248183.html
C++ Дано два двухзначных числа. Найти число, у которого сумма цифр больше https://www.cyberforum.ru/ cpp-beginners/ thread2248178.html
Дано два двухзначных числа. Найти число, у которого сумма цифр больше. Если сумма цифр этих чисел одинаковая, то вывести большее из заданных чисел. Входные данные: Во входном потоке через пробел...
C++ Сумма ряда без циклов (через рекурсию)
Учусь работать с рекурсией, и застрял на самой реализации суммы через рекурсию без циклов. Задание во вложении // Lab7.cpp: определяет точку входа для консольного приложения. // #include...
В каждой строке все элементы, не равные нулю, переписать в начало строки, а нулевые элементы – в конец массива C++
Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы – в конец массива. Новый массив не заводить.
C++ Перевести код с Си на Си++ #include <stdio.h> #include <locale.h> #include <math.h> int main(void) { double x, eps; double n; double y1, y2; short k; https://www.cyberforum.ru/ cpp-beginners/ thread2248159.html
C++ Перевести с Pascal на C++ https://www.cyberforum.ru/ cpp-beginners/ thread2248152.html
Заранее благодарю uses crt; const max=10; function sum(a:integer):integer; var b,s:integer; begin b:=abs(a); s:=0;
C++ Парсинг IPv4 Написал функцию для парсинга IPv4. И не соображу как надо переделать условия, что бы if (_it == _end) не висело как апендикс в конце цикла? Потому что делает почти все тоже, что и под Метка 1 ... https://www.cyberforum.ru/ cpp-beginners/ thread2248151.html
440 / 328 / 171
Регистрация: 01.07.2015
Сообщений: 1,162
18.05.2018, 04:05 0

Удаление нечетных чисел из дерева бинарного поиска

18.05.2018, 04:05. Просмотров 912. Ответов 1
Метки (Все метки)

Ответ

Цитата Сообщение от dishocall Посмотреть сообщение
Как я понял я выхожу за границы дерева
По-моему, ваш код просто напросто обнуляет дерево:

Цитата Сообщение от dishocall Посмотреть сообщение
if (!p) tr = NULL; //один узел
Если у удаляемого узла нет родителей, то это не обязательно значит, что остался один узел. Это также может означать, что мы удалем корень, у которого, как не странно, нет родителей.

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

Методом тыка нашел рабочий вариант del_odd:

C++
1
2
3
4
5
6
7
8
9
10
11
void del_odd(tree *&tr) {  //Удаление нечётных элементов из дерева
  if (tr) {
    del_odd(tr->left);
    del_odd(tr->right);
 
    if (tr->inf % 2 != 0) {
      tree *v = tr;
      Delete(tr, v);
    }
  }
}
Если все равно что-то с удалением будет не так, то попробуйте вставить условие в другие места.

Вернуться к обсуждению:
Удаление нечетных чисел из дерева бинарного поиска
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2018, 04:05
Готовые ответы и решения:

Удаление элементов из бинарного дерева (не дерево поиска)
Задание заключается в создании бинарного дерева, из букв введенной строки, обходе дерева и удалении...

Некорректное удаление элемента бинарного дерева поиска
Задача состоит в том, чтобы удалить максимальный в левом поддереве элемент и все его порожденные...

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

Удаление элемента из бинарного дерева поиска (bst)
Есть структура данных bst с методом delete (и некоторыми другими, не имеющими отношения к данной...

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