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

Дерево общего вида - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программирование в спорте http://www.cyberforum.ru/cpp-beginners/thread331079.html
выскажите, пжста, ваши предложения по программе в области спорта и физической подготовке
C++ Среди простых чисел найти найти такое, в двоичной записи которого максимальное число единиц. Помогите пожалуйста! Среди простых чисел, не превосходящих n, найти такое, в двоичной записи которого максимальное число единиц. http://www.cyberforum.ru/cpp-beginners/thread331076.html
Ошибка в перезагрузке C++
Помогите пожалуйста найти ошибку. #include<iostream> using namespace std; class a {private: int b; double c; public: a():b(0),c(0.0)
Подключение OpenCV к VS2010 C++
Здравствуйте все, у меня первый проект, более менее серьезный, нужно работать с OpenCV, но как её можно подлючить к Студии 2010(конкретно к С++), может вопрос глуповатый, но пожалуйста поделитесь опытом, буду благодарен
C++ Вычислить http://www.cyberforum.ru/cpp-beginners/thread331055.html
Здравствуйете. Помогите пожалуйста написать программуна языке Си. Заключается вот в чем надо вычислить Прикрепляйте картинки к сообщениям.
C++ Как сделать чтобы программа не вылетала после однократного выполнения в консоли Доброго времени суток! Подскажите пожалуйста,можно ли сделать так чтобы после проведения одного действия программа не вылетала,как обычно,а можно было бы делать это непрерывно,а для выхода просто использовать функцию выхода? вот к примеру написал простой код...хочу вычислять степень числа не 1 раз,а допустим 2 раза или 3 и.т.д. ну чтобы время лишнее не терять на перезапуск программы :) ... подробнее

Показать сообщение отдельно
FinKeRosiN
3 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 31
10.07.2011, 18:17  [ТС]
я бинарное дерево выложил, чтобы если кто то возьмется помочь, то не надо было писать код с нуля

я понимаю что нужно сделать теоретически, а вот практически-проблема
дальше объявления структур дело не идет

Добавлено через 19 часов 58 минут
если нет практических примеров, пожалуйста, посоветуйте книгу в которой по подробнее можно почитать про деревья общего(!) вида

Добавлено через 17 часов 53 минуты
вот что я смог сделать
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Лабораторная работа N5
// Студента 912гр. Еремеева Андрея 
// Тема. Бинарное дерево. Работа с бинарными файлами
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
// Описание дерева
struct Info
{
    int Key;
    
};
// Создание дерева
struct Node
{
    Info data;
    Node *next;
};
Node *top=NULL;
Info *RetInfo = NULL, *DelInfo = NULL;
 
// Добавление элемента в дерево
void Add(Node *&top, int Key, int AddKey)
{
    if(top == NULL)
    {
        top = new Node;
        top -> data.Key = Key;
        top -> next = NULL;     
        return;
    }
    else
    {
        if(Key == AddKey) Add(top->next, Key, AddKey);
        else
        {
        }
    }
}
//Вывод дерева на экран
void Display(Node *top, int lvl)
{
    lvl++;
    if(top==NULL) return;
    if(top!=NULL)
    {
        Display(top->next,lvl);
        for(int i=1;i<=lvl*2;i++) cout << "  ";
        cout<<top->data.Key<<endl;
    }
    Display(top->next,lvl);
}
 
// Поиск элемента в дереве
Info *Search(Node *&top, int SearchKey)
{
 
    if(top == NULL) return RetInfo;
    if(top -> data.Key == SearchKey) RetInfo = &(top -> data);
    else RetInfo = Search((top -> next), SearchKey);
    return RetInfo;
}
 
// Главная функция
void main()
{
    setlocale(LC_ALL,"Russian");
    
    int otv, SearchKey, lvl, Key, AddKey;
    do
    {
        cout << "Возможные действия:" << endl
            << "1. Добавить узел в дерево" << endl
            << "2. Вывести дерево на экран" << endl
            << "3. Поиск узла в дереве" << endl
            << "0. Выход" << endl
            << "Ваш выбор:";
        cin >> otv;
        cout << endl;
        system("cls");
        switch(otv)
        {
        case 1:
            cout << "Добавить узел:";
            cin >> Key;
            cout << "После:";
            cin >> AddKey;
            cout << endl;
            Add(top, Key, AddKey);
            cout << "Узел добавлен." << endl << endl;
            break;
        case 2:
            if(top==NULL) cout << " Дерево пустое." << endl;
            else 
            {
            cout << "Содержимое дерева: " << endl;
            lvl=0;
            Display(top,lvl);
            }
            cout << endl << endl;
            break;
        case 3:
 
            if(top==NULL) cout << " Дерево пустое." << endl;
            else
            {
                cout << "Найти узел:";
                cin >> SearchKey;
                cout << endl;
                RetInfo = Search(top, SearchKey);
                if(RetInfo == NULL)
                    cout << "Элемент не найден." << endl;
                else
                    cout << "Элемент найден." << top -> data.Key << endl;
                RetInfo=NULL;
            }
            break;
        
        case 0:
            otv = 0;
            break;
        default:
            cout << "Недопустимое значение" << endl << endl;
            break;
        }
    }
    while(otv != 0);
}
сначала ввести значение нового узла, а потом после какого добавить

Добавлено через 1 час 37 минут
подскажите как добавлять узел, если я хочу чтобы у одного елемента было больше потомков чем 1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru