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

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

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

Удаление элемента из дерева - C++

14.05.2013, 20:25. Просмотров 539. Ответов 0
Метки нет (Все метки)

Написал 2 функции для удаления элемента из дерева. Брал алгоритм из вирта, но почему-то не работает. Может не правильно с паскаля на си переписал. Помогите пожалуйста

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
//ищем самую правую вершину левого поддерева
void del_2_potomka(struct BinaryTree *r, struct BinaryTree *q) //в качестве аргумента элемент, который и надо удалить
{
    if(r->right!=NULL) del_2_potomka(r->right, q);
    else
    {
        q->data=r->data;
        q=r;
        r=r->left;
    }
}
 
/*удаление вершины из дерева*/
void delete_element(int x, struct BinaryTree *p)
{
    if(p==NULL) printf("Элемента в дереве нет!\n");
    else if(x<p->data) delete_element(x,p->left); //идём влево
    else if(x>p->data) delete_element(x,p->right); //идём вправо
    else //исключаем элемент
    {
        struct BinaryTree *q=p;
        if(q->right==NULL) p=q->left;//если нет правого потомка
        else if(q->left==NULL) p=q->right; //если нет левого потомка
        else del_2_potomka(q->left, q);//если у нас 2 потомка
 
        free(q);
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 20:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление элемента из дерева (C++):

Удаление элемента из бинарного дерева - C++
Ругается компилятор в Visual Studio при выполнении кода удаления элемента, а именно в том месте, где нужно удалить элемент с двумя...

Удаление элемента из сбалансированого бинарного дерева - C++
Задание: написать программу, которая создает сбалансированное бинарное дерево, написать процедуру, которая удалит все парные элементы...

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

Дополнение списка с обоих концов Удаление элемента из дерева по указанным значением информационную атрибута - C++
Дополнение списка с обоих концов Удаление элемента из дерева по указанным значением информационную атрибута.

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента - C++
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...

Описать класс «множество» (добавление и удаление элемента, пересечение, объединение и удаление множеств ) - C++
Описать класс «множество», позволяющий выполнять основные операции – добавление и удаление элемента, пересечение, объединение и удаление...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 20:25
Привет! Вот еще темы с ответами:

Удаление узла из дерева - C++
сделав функции добавления,поиска,пару обходов и вывод ввиде дерева в консоли(жаль что нельзя размер по x изменить) при тестировании...

Удаление узла дерева - C++
Добрый вечер. У меня маленькая проблема - написал шаблон для работы с бинарным деревом поиска. Вроде асе робит, но возникла проблема с...

Удаление из бинарного дерева - C++
Здравствуйте! Помогите с удалением узла из бинарного дерева. Номер узла вводится пользователем #include &quot;stdafx.h&quot; #include...

Удаление вершин дерева - C++
Здравствуйте! Помогите в решении задачи. Записи вершин 2-3–дерева – вещественные числа. Описать процедуру, которая удаляет все вершины со...


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

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

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