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

Разобраться с рекурсивной функцией обхода бинарного дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Свой компаратор для контейнера set http://www.cyberforum.ru/cpp-beginners/thread1226205.html
Здравствуйте! Код следующий (комменты): #include <stdlib.h> #include <stdio.h> #include <set> using namespace std; // структура state, содержит массив с двумя элементами и компаратор
C++ Добавить данные в файл С начале программы (игры) вводится имя игрока, которое записывается в файл. Затем игра и счет (int). Как записать этот счет в тот же файл? http://www.cyberforum.ru/cpp-beginners/thread1226204.html
C++ Зачем в классе private?
Объясните пожалуйста кто-нибудь зачем в классе private? что он делает? и почему его не в public поставить зачем приват? Тексты надо перепечатывать внутрь сообщения!
C++ Как вывести несовпадающие элементы массива ?
вывести элементы массива t, которые не совпадают с элементами в массиве p for (i = 0; i < m; i++) { for(j = 0; j < n; j++) { if (*(p+i)!=(*t+j)) { cout <<*(t+i) << ' '; break; }
C++ Тернарный оператор - найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1226164.html
Не пойму почему выдает ошибку, вроде программы самые простые и ошибиться то негде: #include<iostream> using namespace std; int main() { double a,b; bool state; cout<<"a= "; cin>>a; cout<<"b= ";
C++ Ошибка в коде(программа с вектором выполняется только если вызвать её второй раз) Сабж: void vInit() { vInputing(); // Ввод вектора vector_Size = names.size(); cout << "Ваш вектор names: " << endl; for (i; i < vector_Size; i++) { cout << i + 1 << ": " << names << endl; // Вывод вектора } cout << "end" << endl; // Сообщение о конце записи подробнее

Показать сообщение отдельно
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,962
12.07.2014, 11:57     Разобраться с рекурсивной функцией обхода бинарного дерева
В Subscribe нет никаких методов.
Ну так пусть будут. Почему метод работает исключительно с данными Subscribe, но лежит в Tree? "Завистливые функции" - дурной тон.
Я логику работы вроде бы как и понимаю, не могу понять как отрабатывает код в процессе исполнения.
При вызове функции (без разницы Print или еще какой) - пихает локальные переменные Print в стек, туда же кидает адрес кода идущего следом за вызовом функции. После этого передает управление в начало вызванной функции.
При выполнении return - восстанавливает локальные переменные из стека, оттуда-же извлекает данные о том, куда должен передать управление return.
Итого, Node для каждого вызова Print свой собственный, с Node из предыдущих вызовов никак не связанный.

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