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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GetLucky
0 / 0 / 0
Регистрация: 03.09.2014
Сообщений: 87
#1

Бинарное дерево - C++

20.11.2014, 00:53. Просмотров 432. Ответов 1
Метки нет (Все метки)

Здравствуйте, нужно помощь в написании программы.
Условие:

Каждая вершина бинарного дерева содержит:
- 2 указателя (на каждый альтернативный путь поиска - на поддерево);
- данные - указатель на объект, содержащий данные, принадлежащие этой вершине.

Каждая вершина содержит 3 поля: поле данных и два поля указателей на другие вершины. Левый указатель служит для ссылки на вершину нижнего уровня, а правый - на соседнюю вершину того же уровня. Указателям, не ссылающимся на другие вершины, присваивается значение NULL(Крестики на рисунке).

В вершинах должны содержаться такие данные:
Информация о спортивной команде:
- название
- город
- кол-во игр
- кол-во очков ( Выиграно игр, проиграно игр, ничья)
- кол-во игроков
Миниатюры
Бинарное дерево  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 00:53     Бинарное дерево
Посмотрите здесь:

Бинарное дерево (отладка) - C++
Прога работает и всё запускает (здесь фрагмент), но, к сожалению, выводит некие символы и т.д. Где что надо поправить? struct...

Бинарное дерево с шаблоном - C++
Пишу бинарное дерево типа BST<Key, Value>. Значениями хочу сделать любые типы данных. По-этому пришол к шаблонам, но с реализацией не...

Создать бинарное дерево - C++
Ребята, помогите с такое задачей : нужно написать ф-цию для построения бинарного дерево определенным способом, а именно : на входе есть...

STL бинарное дерево - C++
Доброго времени суток!:) Изучаю STL, пока поверхностно прошелся по контейнерам, но не встретил деревьев... хотя set, multiset, map и...

Структуры. Бинарное дерево. - C++
Поставлена такая задача. Является ли двоичное дерево линейным списком вершин? Реализовать надо на динамических структурах. PS....

Создать бинарное дерево - C++
Есть обычное дерево. Узел описывается struct nod int Value; int Number_Of_Sons; nod *Son Число сыновей может быть до пяти. ...

Построить бинарное дерево - C++
Здравствуйте! Подскажите пожалуйста как мне построить бинарное дерево но не поисковое. Поисковое я умею строить а в задании требуют...

ребят!)бинарное дерево - C++
может кто знает как в С++ в программу впихнуть переводчик...??с русского на английский??может кто делал уже помогите..приведите пример хотя...

Класс бинарное дерево - C++
Здравствуйте. Требуется написать англо-русский словарь на основе бинарного дерева. Не полностью понимаю, как будет выглядеть класс....

Переделать в бинарное дерево - C++
#include <iostream> #include <conio.h> using namespace std; struct Node{ int info; Node* next; }; class Spisok { ...

Бинарное дерево. Поиск. - C++
Здравствуйте. Дано задание, создать бинарное дерево с возможностью добавления, удаления элементов и поиск. Знаю, что тут ничего сложного и...

Бинарное упорядоченное дерево - C++
Здраствуйте! Так как я не очень понимаю програмирование прошу помощи. Бинарное упорядоченное дерево содержит англо-украинский...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetLucky
0 / 0 / 0
Регистрация: 03.09.2014
Сообщений: 87
20.11.2014, 21:13  [ТС]     Бинарное дерево #2
Кто-то поможет?

Добавлено через 48 минут
Мои наработки. Нужно доработать ввод данных(внести все в структуру), удаление конкретного элемента дерева и вывод сообщения, если элемент дерева конечный(указывает на NULL), вывод дерева как "дерево" (A->B->C)

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
#include <stdio.h>
#include <string.h>
 
typedef int newtp;
struct node
{
    newtp data;
    node *left;
    node *right;
}   *head=NULL;
 
//фукция сравнивания элементов
int compare(newtp a,newtp b)
{
    return (int)a>(int)b?1:(int)a==(int)b?0:-1;
}
 
//добавить узел в дерево
void add(node *&t,newtp dt)
{
    //создаём уэел и добавляем к концу ветки
    if(t==NULL)
    {
        t=new node;
        t->data=dt;
        t->left=t->right=NULL;
        return ;
    }
    //сравниваем два значения и выбираем к какой ветки добавить к левой или правой
    if(compare(t->data,dt)==1)
    add(t->left,dt);
    else
    add(t->right,dt);
}
 
node* search(node *t,newtp dt)//поиск узла
{
    if(t==NULL) return NULL;// ветка пуста
    if(compare(t->data,dt)==0) return t;
    if(compare(t->data,dt)==1)//сравниваем два значения и выбираем по какой ветки продолжать поиск левой или правой
    search(t->left,dt);
    else
    search(t->right,dt);
}
 
//удалить все элементы из дерева
void clean(node *t)
{
    if(t==NULL)return ;
    clean(t->left);
    delete t;
    clean(t->right);
}
 
//просмотр элементов дерева
void view(node *t)
{
    if(t==NULL)return ;
    view(t->left);
    printf ("Value=%d \n",(int)t->data);
    view(t->right);
}
 
int main(int args,char *argv[])
{
    char command[10];
    int znach;
    while(1)
    {
    printf ("Enter command : \n");
    scanf("%s",command);
        if(strcmp(command,"end")==0)
        {
        printf ("Exit :\n");
        break;
        }
        else if(strcmp(command,"add")==0)//добавить
        {
        printf ("Enter value :\n");
            if(scanf("%d",&znach))
            {
                if(head!=NULL)
                {
                node *t=head;
                add(t,(int)znach);
                }
                else
                add(head,(int)znach);
            }
        }
        else if(strcmp(command,"search")==0)//поиск элемента по значению
        {
        printf ("Enter value :\n");
            if(scanf("%d",&znach))
            {
            node *t=head;
            t=search(t,znach);
                if(t==NULL)//если не найден
                printf ("not found\n");
                else
                printf ("Value=%d\n",(int)t->data);
            }
        }
        else if(strcmp(command,"view")==0)//просмотр
        {
        node *t=head;
        view(t);
        }
        else if(strcmp(command,"clean")==0)//очистить
        {
        clean(head);
        head=NULL;
        printf ("List empty!\n");
        }
        else
        {
        printf ("Unknown command :\n");
        }
 
    }
    clean(head);
    head=NULL;
    return 0;
}
Yandex
Объявления
20.11.2014, 21:13     Бинарное дерево
Ответ Создать тему
Опции темы

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