Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 5
Регистрация: 21.10.2012
Сообщений: 182
1

Как найти в двоичном дереве поиска минимальный элемент, превышающий некоторое заданное значение?

30.06.2013, 02:24. Показов 690. Ответов 1
Метки нет (Все метки)

Вот примерная рекурсивная функция, но я не знаю, как выйти из нее в нужный момент.
C++
1
2
3
4
5
6
7
8
9
10
11
void range(Node *root, int r)
{
    if (root==NULL) return;
    range(root->left, r);
    if(root->key > r) 
       {
          printf("%d\n", root->key); 
          return; //значение найдено, надо здесь выйти из функции, но она рекурсивная, полностью выйти не получается
       }
    range(root->right, r);
}
root - корень дерева
r - заданное значение

Если Вам не нравится моя идея, предложите свою.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2013, 02:24
Ответы с готовыми решениями:

Как найти в двоичном дереве поиска минимальный элемент, превышающий некоторое заданное значение?
Вот примерная рекурсивная функция, но я не знаю, как выйти из нее в нужный момент. void range(Node...

Найти второй максимум в двоичном дереве поиска
Собственно, в задаче не проходит один тест. Условие: Выведите второй по величине элемент в...

Посредством двоичного поиска найти такой минимальный элемент, чтобы выполнялось заданное условие
Даны массивы min и max, отсортированные по невозрастанию и число k. С помощью двоичного поиска...

Найти первый элемент заданного массива, превышающий значение, введённое с клавиатуры
Ребят, честно пытался сам всё сделать, но никак не получается...Может где-то рядом и кручусь, но за...

1
7 / 6 / 6
Регистрация: 07.04.2012
Сообщений: 51
01.07.2013, 22:34 2
Необходимо переходить к левому сыну до тех пор пока сын больше определенного значения.
C++
1
2
3
4
5
6
7
8
9
Node* range(Node *root, int r)
{
    if (root==NULL) return;
    while(root->left->key>r)
    {
    root=root->left;
    }
    return Node;
}
Вот такая идея.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2013, 22:34

Реализация словаря в двоичном дереве поиска
Помогите,пожалуйста, создать программу на С++! Тема: Релизация словаря в двоичном дереве...

Необъявленный идентификатор в двоичном дереве поиска
Добрый вечер! у меня возникла проблема по программе, составленной по данному условию: ...

Реализация словаря в двоичном дереве поиска
Ребят очень нужно, хотя бы реализацию словаря в C++ ,никак не могу найти

Подсчет уровней в двоичном дереве поиска
каков алгоритм подсчета уровней в двоичном дереве поиска. спасибо.

Найти наибольший член прогрессии (его значение и номер) не превышающий заданное b
Даны первый член арифметической прогрессии a и ее разность r,r>0.Найти наибольший член прогрессии...

Найти максимальный элемент в двоичном дереве
Помогите решить задачку:найти максимальный элемент в двоичном дереве. Шаблон уже есть ,мне нужно...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.