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

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

Войти
Регистрация
Восстановить пароль
 
Backtrolled
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 6
#1

Функция удаления всех четных элементов AVL-дерева - C++

03.11.2015, 20:03. Просмотров 187. Ответов 3
Метки нет (Все метки)

Помогите допилить функцию удаления всех парных элементов АВЛ дерева.
Она сейчас удаляет только элементы, которые находятся в правой ветке. Я понимаю почему, но не понимаю как сделать, чтобы она по всему дереву прошлась.

Структура дерева:
C++
1
2
3
4
5
6
struct avl_node
{
    int data;
    struct avl_node *left;
    struct avl_node *right;
}*root;
А вот сама функция удаления всех парных элементов АВЛ дерева:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void avlTree::delall (avl_node **root)
{
 
        if ((*root)->data %2 != 0)     
        delall (&(*root)->left);  
    else                              
        if ((*root)->data %2 != 0)
            delall (&(*root)->right);
        else                        
       
    {
            avl_node *buf=(*root)->left;
            avl_node *t =(*root)->right;
            free (*root);           
            *root=t;               
            while (*root)
            root = &(*root)->left;
            *root = buf; 
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2015, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция удаления всех четных элементов AVL-дерева (C++):

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

Функция расчета среднего арифметического всех четных элементов одномерного массива - C++
написать функцию расчета среднего арифметического всех четных элементов одномерного массива. Использовать функцию для двух массивов A(150)....

Функция удаления элемента из дерева - C++
В данной программе реализовано почти все,кроме фунции удаления,которую я так и не смог реализовать. Руководствуюсь методами: -если это...

Функция удаления элемента из дерева, ошибка в коде - C++
Добрый вечер, уважаемые программисты! :) Помогите, пожалуйста, понять где здесь ошибка. static bool h = false; // узел...

Функция удаления листа (или ветки) бинарного дерева - C++
Здравствуйте программисты! Учусь на первом курсе. Возникли проблемы с разработкой функции удаления ветки листа или корня из дерева. Т.е....

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

3
Backtrolled
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 6
04.11.2015, 22:12  [ТС] #2
ребят ну захелпуйте пожалуйста, я знаю, что тут поменять пару строк нужно, просто не знаю как(
0
zer0mail
2374 / 2004 / 199
Регистрация: 03.07.2012
Сообщений: 7,198
Записей в блоге: 1
04.11.2015, 22:30 #3
С Украины что ли?
0
_Valera_
488 / 370 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
05.11.2015, 02:05 #4
Цитата Сообщение от Backtrolled Посмотреть сообщение
if ((*root)->data %2 != 0) * *
* * * * delall (&(*root)->left); *
* * else * * * * * * * * * * * * * * *
* * * * if ((*root)->data %2 != 0)
* * * * * * delall (&(*root)->right);
не знаю что тут происходит, но подозреваю что так

C++
1
2
3
4
5
if ((*root)->data %2 != 0) * * 
* * * * delall (&(*root)->left); *
* ** * * * * * * * * * * * * * *
if ((*root)->data %2 != 0)
* * * *  delall (&(*root)->right)
0
05.11.2015, 02:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 02:05
Привет! Вот еще темы с ответами:

Проверить на эквивалентность два AVL-дерева - C++
Такое вот задание: проверить на эквивалентность два АВЛ-дерева. Если они не являются информационно эквивалентными, указать минимальное по...

Функция удаления из строки всех точек - C++
Нужно разработать рекурсивную функцию для удаления всех точек из строки. Вот, что у меня получилось. Выбивает ошибку String subscript out...

Функция для удаления всех знаков препинания - C++
Есть набор строк, написать функцию, которая принимает на вход этот набор строк и возвращает новый набор строк, где в каждом из строк...

Написать функцию удаления четных элементов двусвязного списка - C++
я тут что-то набросал, но это бред похоже.подправьте или переправьте :umbrage: кому не сложно. завтра зачет, пытаюсь разобраться void...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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