Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
1

Бинарное Дерево(обход дерева)

22.04.2010, 21:14. Просмотров 2443. Ответов 4
Метки нет (Все метки)

добрый вечер всем!)
в универе задали написать бинарное дерево со всеми видами обхода и т.п. я их написал..
но еще дали 1 вывод его надо написать рекурсией, я его никак не могу реализовать.
поясняю:
например дерево:
7
/ \
6 8
надо вывести его в таком виде, но еще это дерево должно лежать на левом боку(просто нарисовать так трудно, написал так):

7
/ \
6 8
/ \ / \
@ @ @ @
т.е есть там где NULL вывести "@";

struct tree_node{ int val; tree_node *left,*right;}; - элемент дерева.
вот что до чего я дошел, только без выводов @..а просто дерево лежащее на левом боку.
C++
1
2
3
4
5
6
7
8
void print(tree_node *root,int b){  
   if (root!=NULL)
  { print (root->right,b+1); 
    for (int i=1; i<=b; i++) cout<<"  "; 
    cout<<root->val<<endl; 
    print (root->left,b+1);
    }
}
если кто нибудь знает как это реализовать или поменяй мой print, пож-та скажите.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2010, 21:14
Ответы с готовыми решениями:

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

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

Бинарное дерево в бинарном дереве: обход
Есть шаблонный класс бинарного дерева, описанный ниже. Все методы рабочие. template &lt;class T&gt;...

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

4
3 / 3 / 0
Регистрация: 20.04.2010
Сообщений: 64
22.04.2010, 22:00 2
C++
1
2
3
4
5
6
7
8
9
void TreeOut( NodePtr t, int level )
{ int tab = 5;
if (t == NULL) cout <<"Дерево пусто ! \n";
 else
{ if (t->r != NULL) TreeOut(t->r, level+1);   
   cout <<setw(tab*level) <<t->key <<endl;
       if (t->l != NULL) TreeOut(t->l, level+1);           
}
}
0
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
23.04.2010, 12:38  [ТС] 3
спасибо, но я кое-что не понял, не могли вы бы объяснить пару моментов:
что за функция setw()?

а то без нее программа работает так же как моя.
спасибо за то ,что очень быстро ответили
0
536 / 352 / 47
Регистрация: 05.04.2009
Сообщений: 730
23.04.2010, 13:01 4
Цитата Сообщение от lolers Посмотреть сообщение
что за функция setw()?
lolers,
запусти вот это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <iomanip>
 
int main()//=========================================================
{
    std::cout << std::setw(10) << "setw" << std::endl;
    std::cout << std::setw( 9) << "setw" << std::endl;
    std::cout << std::setw( 5) << "setw" << std::endl;
    std::cout << std::setw( 4) << "setw" << std::endl;
    std::cout                  << "setw" << std::endl;
 
    return 0;
}//==================================================================
1
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
23.04.2010, 19:29  [ТС] 5
спасибо..
Джирайя, чем моя программа отличается от вашей?( ну кроме функции setw..)
она выводит тоже самое что и моя((

7
/ \
6 8
/ \ / \
@ @ @ @
надо вывести это дерево лежащее на левом боку, и если левое и правые потомки ==NULL, он выводит "@" на тех местах где нулл)

Добавлено через 6 часов 21 минуту
все спасибо, я сам сделал=)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2010, 19:29

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

Бинарное дерево. Поиск, вывод и удаление элементов из дерева
Задача следующая: Разработать программу, которая содержит информацию о реестре жилых помещений...

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

Бинарное дерево (передать адрес первого (корневого) элемента дерева в метод)
Добрый день! Такой вопрос: Реализован шаблонный класс - бинарное дерево. Создан метод прохождения...

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

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

Обход дерева)
Прога работает) но сказали, что нужно сделать отдельную функцию обхода дерева) можете помочь)...


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

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

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