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

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

Восстановить пароль Регистрация
 
_Sv_
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 97
19.05.2013, 15:19     Удалить узел бинарного дерева #1
необходимо удалить узел, у которого нет потомков
нужно обнулить ссылку предка и освободить память, но не совсем понимаю, как это сделать. не могли бы вы исправить функцию?


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++ Реализация бинарного дерева С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tanya993
1 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4
11.12.2013, 17:35     Удалить узел бинарного дерева #2
Если вы справились с этой задачей, можете со мной поделиться?
Qwertiy
817 / 625 / 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     Удалить узел бинарного дерева
Ответ Создать тему
Опции темы

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