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

бинарное древо (удаление) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ STL обращение к элементу list http://www.cyberforum.ru/cpp-beginners/thread43094.html
Помогите исправить ошибку. #include <list> #include <iostream> using namespace std; class PeopleB{ public: int xxx; }; const int EnKolB=4; int main(){
C++ Для чего нужен define? Для чего нужен оператор define? например код #define N 20 /* сколько первых чисел посчитать */ void main(){ int fibs, index; http://www.cyberforum.ru/cpp-beginners/thread43051.html
Работа со строками. Связное хранение строк. C++
Постановка задачи В текстовом файле хранится последовательность слов. Предполагается, что слово содержит не более 20 букв, слова отделяются друг от друга одним или бо-лее пробелами, количество слов...
Нужно исправить 2 ошибки в коде C++
собственно, САБЖ. нужно исправить 2 ошибки в коде, чтобы его можна было скомпилить и сделать из него ехе-шник. код немалый, тому залил на sendspace: http://sendspace.com/file/ubkkh6 времени...
C++ Вывод случайных текстов на экран http://www.cyberforum.ru/cpp-beginners/thread42999.html
помогите пожалуйста, мне нужен код для случайных выводов текстов на экран
C++ обход массива рендом. Дан массив 10 на 10. Рендом выбираем точку, сравниваем элемент... Затем нужно опять выбирать рендом элемент, но так что бы не выбирать тот, который уже брали. Как можно запомнить, что выбирали уже, а... подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.07.2009, 11:57
Цитата Сообщение от Alexen
ЧТО ДАЛЬШЕ С p ДЕЛАТЬ ПОСЛЕ СОХРАНЕНИЯ ?
обрати внимание там дальше free и return p
она проверяет если одна ветвь пустая, то возвращает непустую
если же обе непустые, то перецепляет всё на одну и возвращает её
смысл в том, чтобы когда она спустится куда-то в глубину, чтобы она не меняла всё дерево, а просто там кусок в глубине поменяла и всё
просто при удалении узла его адрес становится больше не нужен, и вместо него нужно поместить адрес ветви
я б если писал, то написал бы функцию для перецепления ветвей и не заморачивался что и куда она там перецепляет прямо там, где идёт зачистка узла и возврат ветви - из-за этого такой сыр бор, что ничего не понятно
это выглядело бы
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
struct tree *dtree(struct tree *root, char key)
{
    void *leftson, *rightson;
    
    if (!root)
        return NULL;
 
    if(root->info != key) {
        if(root->info < key)
            root->right = dtree(root->right, key);
        else
            root->left = dtree(root->left, key);
        return root;
    }
    
    leftson = root->left;
    rightson = root->right;
    free(root);
 
    if (leftson && rightson)
        return MergeSons(leftson, rightson);
    else if (leftson)
        return leftson;
    else if (rightson)
        return rightson;
    else
        return NULL;
}
а функция перецепления принимает два узла и вешает левый на самый левый лист или правый на самый правый лист
в общем, здесь записано то же самое, только гораздо больше контроля и проще для развития, так как не запускал, 1% процент ошибки оставляем
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru