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

Дописать программу (Дерево. Дописать функцию - bst_remove_all - удалить все - child(left, right)) - C++

Восстановить пароль Регистрация
 
cats2013
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 17
15.04.2013, 00:49     Дописать программу (Дерево. Дописать функцию - bst_remove_all - удалить все - child(left, right)) #1
У меня двоичное дерево поиска и нужно дописать функцию - bst_remove_all - удалить все - child(left, right) с использованием рекурсивной функции.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  template <class Item>
    typename bag<Item>::size_type bst_remove_all
    (binary_tree_node<Item>*& root_ptr, const Item& target)
    // Предусловие: root_ptr - root указатель двоичного дерева поиска
    // или это может быть NULL для пустого дерева).
    // Постусловие: все копии target удаляются из дерева поиска
    // и root_ptr теперь указывает в root (корень)  нового более меньшего дерева поиска. 
    //  return значение указывает сколько копий  target было удалено.
    {
        
            /* 
           все копии target  должны быть удалены
 
        */
        
        binary_tree_node<Item> *oldroot_ptr;
        
        if (root_ptr == NULL)
        {   
              // пустое дерево
 
           
        }
 
        if (target < root_ptr->data( ))
        {  
 
 
                    //Продолжается поиск в левом поддереве 
 
           
        }
 
        if (target > root_ptr->data( ))
        {   
 
                    //Продолжается поиск в правом поддереве 
        }
        
        if (root_ptr->left( ) == NULL)
        {   
               // Target был найден не в левом поддереве, таким образом мы можем удалить этот узел делая правого child
              //      новым корнем - root.
        oldroot_ptr = root_ptr;
        root_ptr = root_ptr->right( );
        delete oldroot_ptr;
        return 1;
        }
 
 
        
        // Если код находит этот  point, тогда мы должны удалить target из настоящего узла.
        //  Мы должны переместить  target с maximum item в левом поддереве. 
        // Продолжается поиск других копий  target для удаления.
        // Этот поиск должен начинаться с настоящего корня - root (с тех пор maximum елементб который был удален
           //    из левого поддерева.
        //  это так же должно быть копией  target).
        
 
    }
Помогите, пожалуйста, дописать программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 00:49     Дописать программу (Дерево. Дописать функцию - bst_remove_all - удалить все - child(left, right))
Посмотрите здесь:

Дописать программу на С++ C++
C++ дописать программу
C++ Дописать программу
C++ дописать ( Из массива А удалить все элементы, которые встречаются в В ровно 2 раза. Из В переписать в С те элементы, которые совпадают с оставшимися)
Дописать программу C++
Нужно исправить ошибки в коде и дописать функцию C++
C++ Дописать функцию сортировки по алфавиту в базе данных
дописать функцию try – catch C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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