Форум программистов, компьютерный форум CyberForum.ru

Построение Бинарного дерева - C++

Восстановить пароль Регистрация
 
The-Dark-Side
12 / 12 / 3
Регистрация: 26.12.2014
Сообщений: 168
03.01.2016, 14:15     Построение Бинарного дерева #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 <string>
#include <fstream>
 
using namespace std;
 
struct tree {
    string number;
    string route;
    string year;
    string repair;
    string lastname;
    tree*left;
    tree*right;
};
void printmenu() {
    cout << "1.Search by number" << endl;
    cout << "2.Print all list by ascending numbers" << endl;
    cout << "3.Search by route" << endl;
    cout << "4.Search by year" << endl;
    cout << "5.Delete by number" << endl;
    cout << "Create new tree by:" << endl;
    cout << "  6.Route number" << endl;
    cout << "  7.Last name" << endl;
}
 
string getinfo(ifstream & fin) {// Читает очередную строку
    string buff;
    fin >> buff;
    return buff;
}
 
void insertnode(tree *root, ifstream &fin) {
    if (root == NULL) { 
        root = new tree; //создаем нового потомка и заполняем его данными
        root->number = getinfo(fin);
        root->route = getinfo(fin);
        root->year = getinfo(fin);
        root->repair = getinfo(fin);
        root->lastname = getinfo(fin);
 
    }
    else {
        if (stoi(getinfo(fin)) < stoi(root->number)) //Если очередной номер меньше чем у предка
            insertnode(root->left, fin);  //создаем левого потомка
        else
            insertnode(root->right, fin); // иначе правого
    }
}
 
void createtree(ifstream & fin, tree*root) {    
    while (!fin.eof()) { //Пока не конец файла, читаем данные
        insertnode(root, fin);
    }
}
 
void printtree(tree*root) {
    if (root) {
        printtree(root->left);
        cout << root->lastname << endl;
        cout << root->number << endl;
        cout << root->repair << endl;
        cout << root->route << endl;
        cout << root->year << endl;
        printtree(root->right);
    }
}
 
int main()
{
    char buff[50];
    ifstream fin("trl.txt");
    if (!fin.is_open())
        cout << "File cannot be open!" << endl;
    else {
        tree *root = NULL;
        createtree(fin, root);
        printtree(root);
        int action;
        printmenu();
        cin >> action;
        switch (action) {
        case 1: {
        }
        case 2: {
        }
        case 3: {
        }
        case 4: {
        }
        case 5: {
        }
        case 6: {
        }
        case 7: {
        }
        }
    }
    system("pause");
    return 0;
}
Код
1 //Номер машины
11  // Маршрута
1991  //Год выпуска
2001  // Год ремонта
A // Фамилия
2 
12 
1992 
2002 
B
3
13 
1993 
2003 
C
4 
14 
1994 
2004 
D
5 
15 
1995 
2005 
E
6 
16 
1996 
2006 
F
7 
17 
1997 
2007 
G
8 
18 
1998 
2008 
H
9 
19 
1999 
2009 
I
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2016, 14:15     Построение Бинарного дерева
Посмотрите здесь:

Построение бинарного дерева из двумерного массива C++
Запись бинарного дерева в файл и восстановление из него этого дерева C++
C++ Шаблон бинарного дерева
Построение бинарного дерева из строки C++
C++ Код Хаффмана реализованный через построение бинарного дерева
C++ Построение бинарного дерева. Где ошибка?
C++ Запись бинарного дерева
C++ Реализация бинарного дерева С++

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

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

Текущее время: 00:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru