Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Backtrolled
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 6
#1

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

03.11.2015, 20:03. Просмотров 269. Ответов 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
Ответы с готовыми решениями:

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

Функция расчета среднего арифметического всех четных элементов одномерного массива
написать функцию расчета среднего арифметического всех четных элементов...

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

Функция удаления элемента из дерева, ошибка в коде
Добрый вечер, уважаемые программисты! :) Помогите, пожалуйста, понять где...

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

3
Backtrolled
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 6
04.11.2015, 22:12  [ТС] #2
ребят ну захелпуйте пожалуйста, я знаю, что тут поменять пару строк нужно, просто не знаю как(
0
zer0mail
2452 / 2089 / 216
Регистрация: 03.07.2012
Сообщений: 7,569
Записей в блоге: 1
04.11.2015, 22:30 #3
С Украины что ли?
0
_Valera_
489 / 371 / 136
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 02:05

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

Функция удаления из строки всех точек
Нужно разработать рекурсивную функцию для удаления всех точек из строки. Вот,...

Функция для удаления всех знаков препинания
Есть набор строк, написать функцию, которая принимает на вход этот набор строк...


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

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

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