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

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

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

Удалить узел бинарного дерева - C++

19.05.2013, 15:19. Просмотров 390. Ответов 2
Метки нет (Все метки)

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


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Node *Rem(Node *root)
{Node *pv=root;
Node *prev;
while(pv)
        {prev=pv;
            if(pv->left==NULL && pv->right==NULL)
              {prev->left=NULL;
                delete prev;
                  prev->right=NULL;
                   delete prev;
               }
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 15:19     Удалить узел бинарного дерева
Посмотрите здесь:

Прошивка бинарного дерева на С++ C++
Копирование бинарного дерева C++
C++ Шаблон бинарного дерева
Итератор для бинарного дерева C++
Создать полную копию исходного дерева и проверить узел C++
Двоичное дерево: как, зная данный узел дерева, изменить его родительский узел? C++
Как запихнуть в очередь указатель на узел дерева? C++
Неправильно удаляет узел из бинарного дерева C++
Поперечное прохождение бинарного дерева C++
C++ Удалить из бинарного дерева всех отцов, имеющих одного сына
C++ Удалить из бинарного дерева ветвь с вершиной, имеющей заданный ключ
C++ Удалить из бинарного дерева ветвь с вершиной, имеющий заданный ключ

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tanya993
1 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4
11.12.2013, 17:35     Удалить узел бинарного дерева #2
Если вы справились с этой задачей, можете со мной поделиться?
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
11.12.2013, 19:51     Удалить узел бинарного дерева #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool remove_leaves(node *cur)
  {
  if(!cur->left && !cur->right)
    return true;
 
  if(cur->left && remove_leaves(cur->left))
    {
    delete cur->left;
    cur->left=0;
    }
 
  if(cur->right && remove_leaves(cur->right))
    {
    delete cur->right;
    cur->right=0;
    }
  
  return false;
  }
Yandex
Объявления
11.12.2013, 19:51     Удалить узел бинарного дерева
Ответ Создать тему
Опции темы

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