Форум программистов, компьютерный форум 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; // Сообщение о конце записи подробнее

Показать сообщение отдельно
Faltfromoss
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 31
12.07.2014, 07:16  [ТС]     Разобраться с рекурсивной функцией обхода бинарного дерева
Цитата Сообщение от Renji Посмотреть сообщение
void Tree::Print(Subscriber * Node)
Автор функции - идиот и не знает о this.
А при чем здесь this, если Print() - это метод класса Tree, а Subscriber * Node - это указатель на структуру с данными, которая является узлом этого дерева. И задача функции выводить не обязательно все дерево, а лишь его часть (ветку), начиная от указанного узла (переданного в функцию Print ()).

И, соответственно этот код:
C++
1
2
3
4
5
6
7
8
9
10
int Subscriber::Print(int count=0)
{
    if(!this)
        return count;
    count=left->print(count);
    ++count;
    //сюда вставляется распечатка содержимого узла
    count=right->print(count);
    return count;
}
немного некорректен в моем случае. В Subscribe нет никаких методов. В ней есть данные и указатели *Parent, *Left, *Right. Всё. А все методы реализованы в классе Tree, который в качестве свойства содержит указатель на корень дерева и от которого все эти методы и пляшут.

to -> olper

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