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

вывод бинарного дерева

04.11.2019, 23:51. Просмотров 322. Ответов 3
Метки нет (Все метки)

Не могу понять в чем ошибка , функции описаны верно но на выводе хаотичные данные
При вводе массива (13 17 5 9 1) я получаю 5 17 3 1 9
вывод слева направо
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
#include "pch.h"
#include <iostream>
#include <ctime>
#include <cstring>
 
using namespace std;
 
 
struct point
{
    char* data;//информационное поле
    point* left;//адрес левого поддерева
    point* right;//адрес правого поддерева
};
 
point* tree(int n, point* p)
{
    point* r;
    int nl, nr;
    if (n == 0) { p = NULL; return p; }
    nl = n / 2;
    nr = n - nl - 1;
    r = new point;
    char s[50];
    cout << "Значение: ";
    cin >> s;
    r->data = new char[strlen(s) + 1];
    strcpy_s(r->data, strlen(s) + 1, s);
    r->left = tree(nl, r->left);
    r->right = tree(nr, r->right);
    p = r;
    return p;
}
 
 
 
void treeprint(point* p, int& count) {
    if (p != NULL) {
        treeprint(p->left, count);
        cout << p->data << "  ";
        count = count + 1;
        treeprint(p->right, count);
    }
}
 
int main()
{
    setlocale(LC_ALL, "russian");
    srand(time(NULL));
    int n = 0, k = 0, count = 0;
    point* beg = nullptr;
    
    do
    {
        cout << "1. Посторить бинарное дерево\n";
        cout << "2. Показать бинарное дерево\n";
        cout << "3. Выход\n";
        cin >> k;
        switch (k)
        {
            case 1:
                cout << "Введите количество элементов" << endl;
                cin >> n;
                beg = tree(n, beg);
                cout << endl;
                break;
            case 2:
                count = 0;
                treeprint(beg, count);
                cout << endl;
                cout << "Листьев в дереве: " << count << endl;
                break;
                
               
        }
    } while (k != 3);
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2019, 23:51
Ответы с готовыми решениями:

Вывод бинарного дерева
Помогите пожалуйста, как вывести бинарное дерево в виде дерева? Само дерево и обход у меня есть, а...

Вывод бинарного дерева
Как организовать вывод бинарного дерева?

Вывод бинарного дерева
Помогите, пожалуйста, с программой. Нужно вывести бинарное дерево так, как выводится дерево...

Вывод бинарного дерева в консоль
Доброго времени суток! Прошу помощи в выводе бинарного дерева на экран (в консоль). Есть шаблон: ...

3
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
05.11.2019, 07:49 2
Цитата Сообщение от h11m4l3yn Посмотреть сообщение
функции описаны верно
Кто тебе такое сказал?
Цитата Сообщение от h11m4l3yn Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
point* tree(int n, point* p)
{
* * point* r;
* * int nl, nr;
* * if (n == 0) { p = NULL; return p; }
* * nl = n / 2;
* * nr = n - nl - 1;
* * r = new point;
* * char s[50];
* * cout << "Значение: ";
* * cin >> s;
* * r->data = new char[strlen(s) + 1];
* * strcpy_s(r->data, strlen(s) + 1, s);
* * r->left = tree(nl, r->left);
* * r->right = tree(nr, r->right);
* * p = r;
* * return p;
}
Вот эта например:
Такое ощущение, что она делает совсем не то, что задумывал ТС
Цитата Сообщение от h11m4l3yn Посмотреть сообщение
я получаю 5 17 3 1 9
что значит получаю? если про распечатку на экран, то ее нету просто, вообще, и как получить, хотя бы такое, этой прогой, я хз...)
0
5859 / 3987 / 1636
Регистрация: 07.05.2019
Сообщений: 12,400
Записей в блоге: 1
05.11.2019, 09:59 3
Цитата Сообщение от h11m4l3yn Посмотреть сообщение
Не могу понять в чем ошибка , функции описаны верно но на выводе хаотичные данные
При вводе массива (13 17 5 9 1) я получаю 5 17 3 1 9
Всё правильно получаешь (вроде бы) - ты так дерево строишь - 13 это корень, слева от него 17 и 5, справа 1 и 9
0
Мозгоправ
1589 / 928 / 423
Регистрация: 01.10.2018
Сообщений: 1,935
Записей в блоге: 2
05.11.2019, 10:05 4
Не дублируйте темы!

См. Составление и печать бинарного дерева
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2019, 10:05

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

Вывод на консоль бинарного дерева
как сделать вывод на консоль бинарного дерева? struct Node { int d; Node* left; Node*...

Реализация и вывод бинарного дерева
Помогите создать бинарное дерево и вывести его на экран по уровням. Заранее спасибо.

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

Вывод левой ветки бинарного дерева
Здравствуйте, уважаемые форумчане! Вывел левую ветку бинарного дерева на экран, но хотел...


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

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

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