Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 23.10.2016
Сообщений: 53
1

Бинарное дерево массив сыновей

09.01.2017, 09:11. Показов 1369. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет. Я написал дерево массива сыновей, но не вдупляю как его выводить в виде дерева, могу лишь вывести корень и сыновей каждого узла в цикле( Помогите пожалуйста
надо сдать послезавтра, чтобы к экзамену допустили
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
49
50
51
#include <iostream>
#include <locale>
#include <fstream>
 
using namespace std;
 
 
 
int main()
 
{
    for (;;)
    {
 
        setlocale(LC_ALL, "rus");
        int i, k, n = 0, b = 0, l = 0;
        int o;
        int v = 0;
        n = 999;
        
 
        cout << "Максимальное колличество элементов : " << n << endl << endl;
 
        const unsigned short m = 50;
 
        int a[m] = { 0 };
        cout << "Введите 256, чтобы остановить заполнение дерева " << endl;
        for (i = 0; i < n; i++)
        {
            
            cout << "Введите a[" << i << "] : ";
            cin >> a[i];
            v++;
            if (a[i]==256) { break; }
        }
        cout << "Дерево:" << endl << endl;
        cout << "Корень дерева - a[0] = " << a[0] << endl << endl;
 
        k = 0;
        for (i = 1; i < v; i++)
        {
            if (i % 2 == 0) k = k + 1;
            if (i % 2 != 0) cout << " левый  сын узла  " << i - k - 1 << "=" << a[i] << endl;
            if (i % 2 == 0) cout << " правый сын узла  " << i - k - 1 << "=" << a[i] << endl;
        }
 
 
    }
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2017, 09:11
Ответы с готовыми решениями:

Из сыновей, для каждого из которых известен отец, составить бинарное дерево
Очень нужна помощь со следующей задачей: Необходимо из сыновей, для каждого из которых известен...

Бинарное дерево (связный список "сыновей")
Здравствуйте, помогите, пожалуйста, с программой.Нужно реализовать бинарное дерево, представленное...

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

Требуется реализовать структуру данных «ассоциативный массив» используя бинарное дерево
Приведите,пожалуйста,примеры подобных программ

6
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.01.2017, 14:34 2
Цитата Сообщение от masterdov Посмотреть сообщение
Я написал дерево массива сыновей
Шта?
Цитата Сообщение от masterdov Посмотреть сообщение
не вдупляю как его выводить в виде дерева
Вы хотите вывести красивое вертикальное бинарное дерево в консоли? Не получится. Максимум - горизонтально.
0
0 / 0 / 1
Регистрация: 23.10.2016
Сообщений: 53
11.01.2017, 08:22  [ТС] 3
Цитата Сообщение от MrGluck Посмотреть сообщение
Сообщение от masterdov
Я написал дерево массива сыновей
Шта?
Написал дерево на основе массива сыновей.

Цитата Сообщение от MrGluck Посмотреть сообщение
Не получится. Максимум - горизонтально.
вертикально это в виде пирамиды?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.01.2017, 12:37 4
Цитата Сообщение от masterdov Посмотреть сообщение
вертикально это в виде пирамиды?
Да, в виде "пирамиды"
0
0 / 0 / 1
Регистрация: 23.10.2016
Сообщений: 53
12.01.2017, 10:07  [ТС] 5
А как выводить в горизонтальном виде?
и мб можно как то треугольником вывести?
0
57 / 29 / 8
Регистрация: 03.06.2016
Сообщений: 284
12.01.2017, 11:04 6
SDL_bgi (http://libxbgi.sourceforge.net/) или libXbgi (там-же).

Добавлено через 5 минут
Как вариант создать файл для GnuPlot и отобразить им же
0
0 / 0 / 1
Регистрация: 23.10.2016
Сообщений: 53
13.01.2017, 12:23  [ТС] 7
Если кому то надо будет
в общем-то я кардинально изменил подход и программу
вот на билдере построение этого деревана основе массива, сохраненного в файле (у меня и сейчас все работает)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
void print(int n,int index,int lvl,int *mastree,int lvvl,int zz)
{
 
int i,x,j;
 
for(i=0;i<(n-3)/lvl;i++)
cout<<"  ";
 
for(i=0;i<lvl;i++)
{
        x=index+i;
        if(x<n)
        {
                cout<<mastree[x]<<"     ";
                for(j=0;j<n-index*2-lvl*2;j++)
                        cout<<"  ";
        }
        else return;
        if (i%2!=0 && lvl==4) cout<<"  ";
}
 
if (zz==lvvl)
return;
x++;
 
cout<<endl;
 
lvl=lvl*2;
 
cout<<endl;
 
if(x<n) print(n,x,lvl,mastree,lvvl,zz+1);
}
 
 
 
int main(int argc, char* argv[])
{
cout<<"Dlya korrectnogo otobrazheniya dereva ";
cout<<"Max visota dereva = 6"<<endl<<endl;
cout<<"Chtobi izmenit' derevo otkroite file tree "<<endl<<endl;
 
FILE * tree = fopen("tree.txt", "r");
 
int i=0,n=0, *mastree;
char c;
 
while (fscanf(tree,"%c",&c)!=EOF)
{
        fseek( tree , i , SEEK_SET );
        fscanf(tree,"%c",&c);
        if (c==' ') n++;
        i++;
}
 
c=0;
n++;
 
mastree=new int[n];
 
fseek( tree , 0 , SEEK_SET );
 
for(i=0; i<n;i++)
        fscanf(tree,"%d",&mastree[i]);
fclose(tree);
 
cout<<"mastree ";
for(i=0; i<n;i++)
        cout<<mastree[i]<<" ";
 
cout<<endl;
cout<<"index   ";
 
for(i=0; i<n;i++)
cout<<i<<" ";
 
cout<<endl;
 
 
 
int lvvl=6;
 
print(n,0,1,mastree,lvvl,0);
 
cout<<endl<<endl;
 
char q;
 
cout<<"    Print tree"<<endl;
while(q!=27)
{
cout<<endl;
 
cout<<"level: ";
cin>>lvvl;
 
print(n,0,1,mastree,lvvl,0);
cout<<endl<<endl;
 
cout<<"Press ESC for exit or ENTER to continue"<<endl;
q=getch();
}
 
 
        getch();
        return 0;
}
//---------------------------------------------------------------------------
0
13.01.2017, 12:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2017, 12:23
Помогаю со студенческими работами здесь

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

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

Бинарное дерево
Здравствуйте, нужно помощь в написании программы. Условие: Каждая вершина бинарного дерева...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru