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

Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод) - C++

Восстановить пароль Регистрация
 
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 105
Завершенные тесты: 2
26.01.2013, 18:15     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод) #1
Добрый день! Такой вопрос:
Реализован шаблонный класс - бинарное дерево.
Создан метод прохождения по элементам с помощью рекурсии.
Не могу понять как передать адресс первого (корневого) элемента дерева в метод, т.к. он у меня находится в private.
и компилятор не позволяет его передавать в метод.Подскажите пожалуйста как можно обратиться к указателю root(корневой элемент)? Может можно обьявить этот метод как дружественный по отношению к этому свойству(root) либо может как то через this можно передать? Или какой другой способ. За ранее благодарю.
Вот код, ненужное поубирал что б глаза не мозолить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
template <class Type>
class Tree
{
    Element<Type>* root;
 
public:
//....
//....
//конструкторы диструкторы прочие методы
//....
//вот метод прохождения по элементам с помощью рекурсии
void Show_help(Element<Type>*a).//<-как сюда передать первый корневой элемент (root) если он в private?
{
    Element<Type>*tmp=a;
    tmp=root;
    if(tmp->get_left())
    {
        Show_help(tmp->get_left());
    }
 
    cout <<tmp->get_value();
 
    if(tmp->get_right())
    {
        Show_help(tmp->get_right());
    }
    
}
 
//вот main
void main()
{
    
    Tree<int> fun;
    fun.add(15);
    fun.add(6);
    fun.add(89);
    fun.add(24);
    fun.add(3);
    fun.add(55);
    fun.add(75);
    fun.add(5);
    fun.Show_help(что сюда передавать??);
    
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 18:15     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод)
Посмотрите здесь:

Бинарное Дерево(обход дерева) C++
C++ Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
C++ Бинарное дерево, удаление элемента
Бинарное дерево С++ (функция проверки внутренних узлов дерева) C++
Бинарное дерево поиска (удаление, добавление элемента) C++
Добавления элемента в бинарное дерево C++
C++ На основе вводимой с клавиатуры последовательности чисел до первого нуля формируется бинарное дерево поиска
Бинарное дерево, расчёт суммы элементов дерева C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
26.01.2013, 18:44     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод) #2
Вариант раз: абстрагировать понятие "обойти дерево и сделать что-то": сделать метод дерева "обойди дерево и сделай что-то", а это что-то задаётся уже отдельным классом.

Вариант два: абстрагировать понятия "положение элемента в дереве": сделать итератор по дереву, который будет безопасно хранить указатель на элемент дерева.

Вариант три, он же вариант раз, но быстро и грязно: вот то, что у вас сейчас Show_help() сделать приватным Show_help_(), пользователю выставить публичный Show_help() без аргументов, который вызывает приватный Show_help_(), передавая ему корневой элемент текущего дерева.
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 105
Завершенные тесты: 2
26.01.2013, 21:17  [ТС]     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод) #3
всё спасибо, разобрался, просто надо было создать метод, в который я положил непосредственно сам метод обхода с аргументом root.(у методов же есть доступ к свойствам класа=))
C++
1
2
3
4
void print()
    {
        print_help(root);
    }
Yandex
Объявления
26.01.2013, 21:17     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод)
Ответ Создать тему
Опции темы

Текущее время: 21:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru