Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Olejan_one
1 / 1 / 2
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
#1

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

26.01.2013, 18:15. Просмотров 495. Ответов 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(что сюда передавать??);
    
 
 
 
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2013, 18:15
Ответы с готовыми решениями:

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся...

Бинарное Дерево(обход дерева)
добрый вечер всем!) в универе задали написать бинарное дерево со всеми видами...

Бинарное дерево, расчёт суммы элементов дерева
Задание: Программа должна обрабатывать бинарное дерево, содержащее целые числа....

Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
Привет всем! Мне надо в курсовой работе написать программу, которая строит...

Сформировать бинарное дерево поиска и определить максимальную глубину дерева
Добрый день всем. По задаче необходимо сформировать бинарное дерево поиска и...

2
OhMyGodSoLong
~ Эврика! ~
1245 / 994 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
26.01.2013, 18:44 #2
Вариант раз: абстрагировать понятие "обойти дерево и сделать что-то": сделать метод дерева "обойди дерево и сделай что-то", а это что-то задаётся уже отдельным классом.

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

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

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в...

Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив равны.
Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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