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

Данные из массива структур Date передать в бинарное дерево поиска и вывести его при помощи обратного обхода

03.10.2016, 01:45. Показов 971. Ответов 2
Метки нет (Все метки)

Доброго времени суток!
Задание:Данные из массива структур Date передать в бинарное дерево поиска и вывести его при помощи обратного обхода

Проблема: не понимаю почему неправильно выводит данные на консоль

Примечание:
если я вместо структуры Date сделаю int и буду выводить точно также то все получается хорошо.
значит что-то не так когда я присваиваю значение одной структуры другой, но что именно.

Код функций работы с деревом:
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
#include <iostream>
#include <string>
#include <time.h>
#include <vector>
 
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::vector;
 
//данные из массива
struct Data {
    string name;
    int passportID;
};
 
//узел
struct Node {
    Data data;
    Node *left;
    Node *right;    
};
 
//добавление дерева
void addNode(Data data,Node *&tree) {
 
    //если дерево пустое 
    if(tree == NULL) {
        tree = new Node;
        tree->data.passportID = data.passportID;
        tree->data.name = data.name;
        tree->left = NULL;
        tree->right = NULL;
    }
 
    //добавление левого элемента
        if(data.passportID < tree->data.passportID) {
            if(tree->left != NULL){
                addNode(data,tree->left);
            }
            else {
                tree->left = new Node;
                tree->left->left = NULL;
                tree->left->right = NULL;
                tree->data.passportID = data.passportID;
                tree->data.name = data.name;
            }
        }
 
    //добавление правого элемента
        if(data.passportID > tree->data.passportID) {
            if(tree->right != NULL){
                addNode(data,tree->right);
            }
            else {
                tree->right = new Node;
                tree->right->left = NULL;
                tree->right->right = NULL;
                tree->data.passportID = data.passportID;
                tree->data.name = data.name;
            }
        }
 
}//addNode
 
//обратный обход
void reverseRound(Node *root) {
 
    if(root == NULL) {
        return;
    }
 
    reverseRound(root->right);
    cout << root->data.name;
    cout << root->data.passportID << " ";
    reverseRound(root->left);
}
Главная функция:
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
#include "TreesFunctions.h"
 
int main()
{
  setlocale(LC_ALL,"Russian");
  srand(time(NULL));
 
  int number;
  cout << "Введите количество клиентов: " << endl;
  cin >> number;
 
  vector<Data> clients(number);
 
  for(int i = 0; i < number; i++ ) {
    cout << "Введите имя:" << endl;
    cin.get();
    getline(cin,clients[i].name);
    cout << endl;
    clients[i].passportID = 10000 + rand()%80000;
  }
 
  Node *tree = NULL;
  for(int i = 0; i < number; i++)
  addNode(clients[i],tree);
  reverseRound(tree);
 
  deleteTree(tree);
  system("pause");
  return EXIT_SUCCESS;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2016, 01:45
Ответы с готовыми решениями:

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

Вывести число вершин n-го уровня (Бинарное дерево поиска)
всем привет, дано такое задание: Напишите программу, которая формирует бинарное дерево поиска,...

Бинарное дерево поиска.Вывести слова с тремя гласными
Доброго времени суток. Помогите с задачей пожалуйста. Вот условие: В текстовом файле содержится...

Преобразовать идеальное бинарное дерево в бинарное дерево поиска
Всем привет, я создал идельное бинарное дерево и написал к нему функции. Как мне теперь можно...

2
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
03.10.2016, 15:47 2
Доброго времени суток!
Задание:Данные из массива структур Date передать в бинарное дерево поиска и вывести его при помощи обратного обхода
Не могли бы Вы дать полную постановку задачи ?
0
0 / 0 / 0
Регистрация: 14.04.2016
Сообщений: 14
04.10.2016, 23:17  [ТС] 3
Создать проект для работы с деревом поиска, содержащий обработчики, которые должны:
- Ввести информацию в массив.Каждый элемент массива должен содержать строку текста и целочисленный ключ(например
ФИО и номер паспорта)
- Внести информацию из массива в дерево поиска
- сбалансировать дерево поиска
- добавить в дерево поиска новую запись
- по заданному ключу найти информацию в дереве поиска и отобразить ее
- удалить из дерева поиска информацию с заданным ключом
- распечатать информацию прямым, обратным обходом и в порядке возрастания ключа

Добавлено через 1 минуту
Конкретно тут, я остановился на внести информацию из массива в дерево поиска, т.е когда я вывожу мне совсем не то выводит
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2016, 23:17

Как, имея бинарное дерево наглядно вывести его на экран?
С созданием, обработкой, обходами всё нормально, все работает. Но вот проблема, как это наглядно...

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

Бинарное дерево поиска
Давайте рассмотрим некоторый пример Допустим есть числа от 0 до 99 которые добавляются в бинарное...

Бинарное дерево поиска
Я написала программу поиска минимума в массиве или среди элементов массива от i до j. В части...


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

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

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