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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 106
Завершенные тесты: 2
#1

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

26.01.2013, 18:15. Просмотров 450. Ответов 2
Метки нет (Все метки)

Добрый день! Такой вопрос:
Реализован шаблонный класс - бинарное дерево.
Создан метод прохождения по элементам с помощью рекурсии.
Не могу понять как передать адресс первого (корневого) элемента дерева в метод, т.к. он у меня находится в 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++
Здравствуйте. Помогите пожалуйста. Надо написать функцию,проверяющую есть ли в дереве внутренний узел, у которого только один потомок. ...

Постройте и выведите на экран бинарное дерево. Найдите произведение элементов дерева, находящихся на уровне u - C++
Я построил дерево вот код # include &lt;iostream&gt; # include &lt;conio.h&gt; #include &lt;clocale&gt; using namespace std; //Наша структура ...

Бинарное дерево, удаление элемента - C++
Задание: создать класс для хранения целых чисел в виде бинарного дерева. Обеспечить поиск, добавление и удаление элементов. Получилось...

Добавления элемента в бинарное дерево - C++
Уже создавал подобную тему , но так и не получилось разобраться до конца . Есть такая задача : нужно создать бинарное дерево , вывести его...

Добавление элемента в бинарное дерево - C++
Добрый вечер, помогите написать метод добавления в бинарное дерево. Я написал вот такой код: class word_translate { private: char...

На основе вводимой с клавиатуры последовательности чисел до первого нуля формируется бинарное дерево поиска - C++
Страшно каюсь, не подумайте что я ленивый тюлень и мне не хочется вникать в тему, обычно я никогда так не делала, но у меня не осталось...

Адрес первого элемента массива - C++
1. Написать функцию, принимающую в качестве параметра количество строк и столбцов в таблице умножения. Функция должна создать двумерный...

Объяснить почему указатель выводит всю строку сразу, а не адрес первого элемента - C++
Всем привет :) Начал изучать сей замечательный язык и появились кое-какие вопросы к гуру! Запутался в указателях... ...

Как найти количество элементов массива, зная лишь адрес первого элемента и тип? - C++
Где-то в коде объявлен массив, кол-во элементов неизвестно, имеется ссылочная переменная на этот массив и все, назовем ее (А), как узнать...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 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
Сообщений: 106
Завершенные тесты: 2
26.01.2013, 21:17  [ТС]     Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод) #3
всё спасибо, разобрался, просто надо было создать метод, в который я положил непосредственно сам метод обхода с аргументом root.(у методов же есть доступ к свойствам класа=))
C++
1
2
3
4
void print()
    {
        print_help(root);
    }
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru