Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Faltfromoss
0 / 0 / 1
Регистрация: 28.03.2014
Сообщений: 32
12.07.2014, 07:16  [ТС]

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

12.07.2014, 07:16. Просмотров 486. Ответов 4
Метки (Все метки)

Цитата Сообщение от 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

Я логику работы вроде бы как и понимаю, не могу понять как отрабатывает код в процессе исполнения. Попробовал отладчиком пошагово отследить, запутался в край :/
http://www.cyberforum.ru/cpp-beginners/thread1291459.html
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 07:16
Готовые ответы и решения для C++ Разобраться с рекурсивной функцией обхода бинарного дерева:

Реализация обхода в ширину и глубину бинарного дерева
Как реализовать обход дерева (глубины три, т.е. трех уровневое) в глубину и...

Пронумеровать вершины бинарного дерева в соответствии с порядком концевого обхода
Здравствуйте!!!! Помогите пожалуйста решить задачу. Построить бинарное дерево...

Разобраться с левосторонним обходом бинарного дерева
Здравствуйте,помогите подробно разобраться как происходит левосторонний обход...

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя...

Создание бинарного дерева из бинарного файла
struct Bin { string name; string city; int players; int score; };...

4
Разобраться с рекурсивной функцией обхода бинарного дерева 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) << ' ';...
C++ Тернарный оператор - найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1226164.html
Не пойму почему выдает ошибку, вроде программы самые простые и ошибиться то негде: #include<iostream> using namespace std; int main() { double a,b; bool state; cout<<"a= "; ...
C++ Ошибка в коде(программа с вектором выполняется только если вызвать её второй раз) Сабж: void vInit() { vInputing(); // Ввод вектора vector_Size = names.size(); cout << "Ваш вектор names: " << endl; for (i; i < vector_Size; i++) { ... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru