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

Условия добавления в дерево - C++

Восстановить пароль Регистрация
 
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
30.05.2012, 20:51     Условия добавления в дерево #1
Привет, решаю задачку, не могу кое с чем разобраться.

у меня задача добавить в дерево число, как концевой узел.
если число меньше значения корня дерева, то добавить в левое дерево(это ОК), если больше, то в правое(это тоже ОК), а если равно то никуда ничего не добавлять, а просто пропустить его.

то есть если у нас корень 5, и мы когда-то захотим вставить число 5, то мы должны будем просто пропустить этот шаг и все.

вот моя функция добавления, скажите что делаю не так.

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
node * new_node (int x) {
    node *ptr;
    ptr = new node;
    ptr->info = x;
    ptr->left = ptr->right = NULL;
    return ptr;
}
 
node* add_node(int x, node* root) {
    node *ptr = root;
    if (root == NULL) 
        return new_node (x);
    if (x == ptr->info) {
        cout << "Oshibka pri dobavlenii " << x << ", aga!" << endl << endl;
        return NULL;
    }
    if (x < root->info) {
        root->left = add_node (x, root->left);
        return ptr;
    } else {
        root->right = add_node (x, root->right);
        return ptr;
    }
    
}
например хочу добавить числа 2 5 8 9 3 0 1 8. он не добавит ниодной восьмерки, а должен добавить первую , но не добавить вторую. подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2012, 20:51     Условия добавления в дерево
Посмотрите здесь:

C++ Метод добавления вопроса в тестирование
Функция добавления C++
C++ Дерево, бинарное дерево
C++ Вектор, добавления элементов
Добавления элемента в бинарное дерево C++
Добавления свойст C++
Принцип добавления слов в бинарное дерево C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
30.05.2012, 21:15     Условия добавления в дерево #2
Попробуйте так:
C++
1
2
3
4
5
if (x == ptr->info)
    {
        cout << "Oshibka pri dobavlenii " << x << ", aga!" << endl << endl;
        return ptr; //!!!
    }
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
30.05.2012, 22:30  [ТС]     Условия добавления в дерево #3
Спасибо, помогло.
Yandex
Объявления
30.05.2012, 22:30     Условия добавления в дерево
Ответ Создать тему
Опции темы

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