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

Поиск предка элемента в бинарном дереве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача на структуры. Вывести время через одну секунду http://www.cyberforum.ru/cpp-beginners/thread1152012.html
Дано время t. Определить какое будет время через одну секунду. Первая строка входного файла содержит описание времени t в формате hh:mm:ss. В выходной файл выведите время через секунду в формате...
C++ Ищу уроки/сайт для начинающего С++ программиста: your advice is required :) Доброе утро дорогие форумчане! Подскажите пожалуйста хороший сайт, где есть уроки по С++ для начинающих. На данный момент я занимаюсь по этим сайтам http://www.code-live.ru ... http://www.cyberforum.ru/cpp-beginners/thread1152006.html
Произведение элементов массива, расположенных между первым и вторым нулевыми элементами C++
не могу понять, компилятор ругается на вторую функцию. или я что-то неправильно делаю? //В одномерном массиве, состоящем из п целых элементов, вычислить: //1) номер максимального элемента массива;...
C++ Проверить добавление в начало массива 3 элементов
11. 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить 5 последних элементов массива. 4) Добавить в начало массива 3...
C++ Параметры CreateConsoleScreenBuffer http://www.cyberforum.ru/cpp-beginners/thread1151997.html
Доступ к экранного буфера консоли. Для получения списка прав доступа, см. консоли Защита буфера и права доступа., The access to the console screen buffer. For a list of access rights, see Console...
C++ Как вывести 5 строк из файла if(vibir=='1'){ char mas; FILE* file; file = fopen ("c:\\mylist.gm","r"); if(file==NULL) file = fopen ("d:\\mylist.gm","r"); if(file==NULL) {cout<<"error,wild C or D does not exist";} else { подробнее

Показать сообщение отдельно
KobaEugeneA
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 166

Поиск предка элемента в бинарном дереве - C++

20.04.2014, 09:16. Просмотров 487. Ответов 1
Метки (Все метки)

Вот функция поиска предка в бинарном дереве поиска:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  tree* predok(tree* root, tree* potomok, int n = -1){
    n++;
    printf("%d %d\n", root -> a, n);
    if(root -> left != NULL){
      if(root -> left == potomok)
    return root;
      else
    predok(root -> left, potomok, n);
    }
    if(root -> right != NULL){
      if(root -> right == potomok)
    return root;
      else 
    predok(root -> right, potomok, n);
    }
    if(n == 0)
      return NULL;
  }
  tree* find_left(tree* root){
    if(root -> left == NULL)
      return root;
    find_left(root -> left);
  }
В функцию отправляю root - указатель на дерево, как на изображении под буквой b перед удалением элемента.
http://www.cyberforum.ru/attachment....1&d=1397971098
potomok - указатель на лепесток с цифрой 11. Функия должна возвращать указатель на лепесток с цифрой 10, а возвращает NULL. В терминале выдаёт:
5 0
2 1
1 2
3 2
10 1
9 2
7 3
8 4
То есть ветку с лепестками 11 и 12 функция вообще не проверяет. Не могу понять почему.
0
Миниатюры
Поиск предка элемента в бинарном дереве  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru