0 / 0 / 1
Регистрация: 11.10.2012
Сообщений: 133
1

Помогите найти ошибку в построении бинарного дерева

29.10.2014, 04:08. Показов 591. Ответов 0
Метки нет (Все метки)

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
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <locale.h>
 
using namespace std;
 
struct Tree //Звено дерева
{
    int data; //Значение элемента дерева
    Tree *left, *right; //Указатели на новые звенья
};
 
class NT
{
public:
    void show(Tree *&Tree) //Функция обхода
    {
        cout << "File name? ";
        char s[20];
        FILE *file;
        fopen_s(&file, s, "a"); // открываем файл
        if (Tree != NULL) //Пока не встретится пустое звено
        {
            show(Tree->left); //Рекурсивная функция для вывода левого поддерева
            cout << Tree->data << "  "; //Отображаем корень дерева
            fprintf(file, "%d ", Tree->data); //Добавляем информацию в файл
            show(Tree->right); //Рекурсивная функци для вывода правого поддерева
        }
        fclose(file);
    }
 
    void addToTree(int data, Tree *&NTree) //Фукция добавления звена в дерево
    {
        if (NULL == NTree)  //Если дерево пусто, то создаем корень
        {
            NTree = new Tree; //Выделяем память под звено дерева
            NTree->data = data; //Записываем данные в звено
            NTree->left = NTree->right = NULL; //Подзвенья инициализируем пустотой во избежание ошибок
        }
 
        if (data < NTree->data)   //Если нововведенный элемент data меньше чем элемент data из корня дерева, уходим влево
        {
            if (NTree->left != NULL) addToTree(data, NTree->left); //При помощи рекурсии записываем элемент на свободный участок
            else //Если элемент получил свой участок, то
            {
                NTree->left = new Tree;  //Выделяем память левому подзвену
                NTree->left->left = NTree->left->right = NULL; //У левого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                NTree->left->data = data; //Записываем в левое подзвено записываемый элемент
            }
        }
 
        if (data > NTree->data)   //Если нововведенный элемент data больше чем элемент data из корня дерева, уходим вправо
        {
            if (NTree->right != NULL) addToTree(data, NTree->right); //При помощи рекурсии записываем элемент на свободный участок
            else //Если элемент получил свой участок, то
            {
                NTree->right = new Tree;  //Выделяем память правому подзвену
                NTree->right->left = NTree->right->right = NULL; //У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                NTree->right->data = data; //Записываем в правое подзвено записываемый элемент
            }
        }
 
    }
};
 
int main()
{
    setlocale(LC_ALL, "russian");
    Tree *Tree = NULL;  //Создаем указатель, тип которого равен типу звена дерева, инициализируем его пустотой
    const int size = 13;
    NT nt;
    int alf[size] = { 4, 9, 19, 95, 1, 8, 20, 12, 92, 69, 57, 27, 0 };
    cout << "Обход чисел: " << endl;
    for (int i = 0; i<size; i++) { nt.addToTree(alf[i], Tree); }//Добавление элементов в дерево
    nt.show(Tree); //Вывод на экран дерева или просто обход дерева
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2014, 04:08
Ответы с готовыми решениями:

Найти ошибку в построении бинарного дерева
Код программы: //uses // crt; const zn = ; type TFpile =...

Найти ошибку в построении цикла
Программа компилируется и запускается на выполнение, но после заполнения массива с клавиатуры...

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

Найти величину наименьшего элемента бинарного дерева
Найти величину наименьшего элемента бинарного дерева. Бинарное упорядоченное дерево, в котором...

0
29.10.2014, 04:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2014, 04:08
Помогаю со студенческими работами здесь

Найти второй максимум бинарного дерева поиска
Прошу написать какие-нибудь извращенные входные данные для бинарного дерева поиска. Не проходит 7...

Найти среднее арифметическое узлов бинарного дерева целых чисел
Помогите решить. Надо срочно!!! Создать бинарное дерево целых чисел. Вывести на экран значение...

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на...

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


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

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

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