Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 3
Регистрация: 21.11.2015
Сообщений: 64
1

Удаление узла дерева

24.05.2016, 20:28. Показов 3355. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разбираюсь с удалением в дереве, начал с удаления листа и сразу же столкнулся с проблемой
Итак, я ищу в дереве элемент, который я хочу удалить.
Потом я его удаляю и приравниваю NULL
Спустя некоторое время до меня дошло, что я именно удаляю элемент, а мне же нужно удалять и указатель на него. Вот как это сделать я как раз таки не понимаю.

Структура:
C
1
2
3
4
5
struct Tree
{
    int key;
    Tree *pPoint[4];
};
Ф-ция удаления:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void del(Tree*&root)
{
    if (root == NULL)
        return;
    int key, k = 0;
    Tree *adds, *tmp;
    printf("Введите ключ, по которому удаляется элемент: ");
    scanf("%d", &key);
    adds = search(root, key);
    if (adds)
    {
        delete adds;
        adds = NULL;
    }
    else
        printf("NOT OK");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2016, 20:28
Ответы с готовыми решениями:

Удаление узла бинарного дерева
Бьюсь над задачей битый час, в функцию передаю указатель на узел, который и хотим удалить. И в...

Ошибка сегментации при добавлении узла бинарного дерева
делал реализацию добавления узла в бинарное дерево, но ловлю сегфолт, почему ? что здесь не так?...

Удаление узла по индексу с однонаправленого списка
Здравствуйте, мне нужно удалить информацию о пятом студенте(пятый узел списка), есть функция...

Удаление узла из односвязного списка. + Сортировка
Уважаемые, форумчане! Помогите разобраться с работой функции void DeleteNodeByIndex(NODE *head,int...

6
10 / 10 / 9
Регистрация: 30.03.2016
Сообщений: 163
24.05.2016, 20:33 2
напиши что в вопросе надо.
0
1 / 1 / 3
Регистрация: 21.11.2015
Сообщений: 64
24.05.2016, 20:44  [ТС] 3
У меня не получается правильно удалить лист дерева
0
10 / 10 / 9
Регистрация: 30.03.2016
Сообщений: 163
24.05.2016, 20:47 4
C
1
void del(Tree* root)
попробуй так
0
1 / 1 / 3
Регистрация: 21.11.2015
Сообщений: 64
25.05.2016, 10:49  [ТС] 5
Ничего не изменилось от этого

Добавлено через 13 часов 58 минут
Подскажите, пожалуйста, как мне удалить указатель на найденный элемент
0
2664 / 2239 / 240
Регистрация: 03.07.2012
Сообщений: 8,141
Записей в блоге: 1
25.05.2016, 15:17 6
Не понимаю. ТС сначала пишет:
C++
1
2
3
4
5
if (adds)
* * {
* * * * delete adds;
* * * * adds = NULL;
* * }
а затем спрашивает:
Цитата Сообщение от qluxzq Посмотреть сообщение
как мне удалить указатель на найденный элемент
Он что, не понимает, что сам написал? Или не сам...
0
1 / 1 / 3
Регистрация: 21.11.2015
Сообщений: 64
25.05.2016, 18:53  [ТС] 7
zer0mail, когда я добавляю новый элемент я вижу, что указатель на удаленный элемент есть и там что-то содержится
0
25.05.2016, 18:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2016, 18:53
Помогаю со студенческими работами здесь

После компиляции VS2008 падает после удаления узла дерева, имеющего потомка
Вот код на Си: #include <stdio.h> #include <string.h> #include <malloc.h> #include <conio.h>...

Удаление дерева
НЕ работает удаление дерева. Программа вызывает срабатывание точки остановы. #define...

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

Удаление узла из дерева
Создаю дерево(картинку прикрепил): program BinTree; uses Tree; var TheRoot, P: PNode; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru