2 / 2 / 1
Регистрация: 28.11.2016
Сообщений: 85
1

Бинарное дерево слов

21.09.2017, 12:55. Показов 1372. Ответов 1
Метки нет (Все метки)

здравствуйте, моя задача звучит так :
Написать программу, которая создает бинарное дерево слов, считываемых из файла. Распечатать содержимое дерева в алфавитном порядке
я ее написала,ответ выдает правильный,но есть сомнения в правильности построения дерева.
подскажите,правильно ли я сделала?

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
 #include "stdafx.h"
#include <iostream>
#include "fstream"
#include <windows.h>
#include <string>
 
using namespace std;
 
int tabs = 0; //Для создания отступов
              //Кол-во отступов высчитывается по кол-ву рекурсивного вхождения при выводе в фукцию print
 
              //Структура ветки
struct Branch
{
    string Data ; //Поле данных
    Branch *LeftBranch; //УКАЗАТЕЛИ на соседние веточки
    Branch *RightBranch;
};
 
 
//Функция внесения данных
void Add(string  aData, Branch *&aBranch)
{
    //Если ветки не существует
    if (!aBranch)
    { //создадим ее и зададим в нее данные
        aBranch = new Branch;
            aBranch->Data = aData;
        
        aBranch->LeftBranch = 0;
        aBranch->RightBranch = 0;
        return;
    }
    else //Иначе сверим вносимое
        if (aBranch->Data>aData) 
        { //Если оно меньше того, что в этой ветке - добавим влево
            Add(aData, aBranch->LeftBranch);
        }
        else
        { //Иначе в ветку справа
            Add(aData, aBranch->RightBranch);
        };
};
 
//Функция вывода дерева
void print(Branch *aBranch)
{
    if (!aBranch) return; //Если ветки не существует - выходим. Выводить нечего
    tabs++; //Иначе увеличим счетчик рекурсивно вызванных процедур
            //Который будет считать нам отступы для красивого вывода
 
    print(aBranch->LeftBranch); //Выведем ветку и ее подветки слева
 
    for (int i = 0; i<tabs; i++) cout << " "; //Потом отступы
    cout << aBranch->Data << endl; //Данные этой ветки
 
 
    print(aBranch->RightBranch);//И ветки, что справа
 
    tabs--; //После уменьшим кол-во отступов
    return;
};
 
void FreeTree(Branch *aBranch)
{
    if (!aBranch) return;
    FreeTree(aBranch->LeftBranch);
    FreeTree(aBranch->RightBranch);
    delete aBranch;
    return;
};
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string s;
    ifstream fin("C:\\the_file_for_the_laboratory_W.txt");
    if (!fin.is_open()) {
        cout << "ERROR!TRY AGAIN " << endl;
    }
    else {
        Branch *Root = 0;
 
 
 
        for (int i = 0; (!fin.eof()); i++)
        {
            fin >> s;
            Add(s, Root);
        }
 
        print(Root);
        FreeTree(Root);
 
        cin.get();
        
    };
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2017, 12:55
Ответы с готовыми решениями:

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

Бинарное дерево из слов
Вроде разобралась в принципе заполнения обычного бинарного дерева из чисел. но как быть в...

Принцип добавления слов в бинарное дерево
Доброго времени суток! Я хотел бы узнать по какому принципу добавлять слова в бинарное дерево. Если...

Бинарное дерево из слов и удаление узла
Ребят нужно создать дерево где пользователь вводит слова, они записываются в дерево, а потом вводит...

1
2 / 2 / 1
Регистрация: 28.11.2016
Сообщений: 85
21.09.2017, 12:58  [ТС] 2
фот файл для проверки
Вложения
Тип файла: txt the_file_for_the_laboratory_W.txt (20 байт, 14 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2017, 12:58
Помогаю со студенческими работами здесь

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

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

Бинарное дерево
Здравствуйте.Прошу помощи.Никак не могу разобраться в задании.Нужно сделать бинарное дерево и с...

C++, Бинарное дерево
Привет. Можете помочь с заданием. Прочитал кучу теорию по бинарным деревьям. Сел делать вообще не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru