Форум программистов, компьютерный форум 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
20.04.2014, 09:45  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tree* predok(tree* root, tree* potomok, int n = -1){
    n++;
    if(root -> left != NULL){
      if(root -> left == potomok){printf("%d %d 1\n", root -> a, n);
    return root;}
      else
    predok(root -> left, potomok, n);
    }
    if(root -> right != NULL){
      if(root -> right == potomok){printf("%d %d 2\n", root -> a, n);
    return root;}
      else 
    predok(root -> right, potomok, n);
    }
    if(n == 0){printf("%d %d 3\n", root -> a, n);
      return NULL;}
  }
Пробовал ещё так переписывать код. В терминале выдаёт:
10 1 2
5 0 3
То есть он находит нужную ветку, но потом выходит ещё на уровень рекруссии выше и возвращает NULL. Почему такое поведение у программы?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru