СМ
Сергей Максюта

Помогите с реализацией шаблона класса Бинарное дерево: Visual Studio 2010, С++.



Вот задание:
Создать шаблон класса «бинарное дерево» . Написать программу, которая содержит текущую информацию о заявках на авиабилеты, с использованием данного шаблона класса.
Каждая заявка содержит:
-пункт назначения;
-номер рейса;
-фамилию и инициалы пассажира;
-желаемую дату вылета.
Программа должна обеспечивать:
*хранение всех заявок в виде двоичного дерева;
*добавление и удаление заявок;
*вывод заявок по заданному номеру рейса и дате вылета с их последующим удалением;
*вывод всех заявок.

Шаблон класса я создал, но вот как с ним работать, как добавить заявку в дерево? Параметр Т - типа int, Т1 - string. Что не пробовал, ничего не выходит.. .Привожу текст шаблона класса Tree, еще я создал 2 класса Заявка и Узел:
#pragma once
template
#pragma once
#include "Node.h"
template
class Tree
{
Node * root;
public:
Tree(){
root=NULL;
};
void insert(Node* New, Node* cur){
if(cur==NULL)
cur=New;
else {
if(cur->Num>New->Num)
insert(* New, cur->left)
else
insert(* New, cur->right)
}
}
void search(Node * cur, T value){
if(cur==NULL)
return;

else {
if(cur->Num=value)
return;
else{
if(cur->Num>value)
search(cur->right, value)
else
search(cur->left, value)
}
}
}
void obhod(Node * cur){
if(cur==NULL)
return;
else{
obhod(cur->right);
obhod(cur->left);
}
}
void remove(Node * cur, T value){
if(cur==NULL)
return;
else {
if(cur->Num>value)
remove(cur->left, value);
if(cur->Numright, value);
if(cur->Num==value)
cur=NULL;
}
}
};

ММ
Максим Моисеенко

Вставка в бинарное дерево - самый сложный момент. Алгоритм такой
1. Ищем узел, к которому надо присоединить новое значение.
2. Если с нужное стороны ничего не присоеденено - добавляем узел и возвращаемся.
3. Остоединяем старое значение, просоединяем новое.
4. Последовательно присоеденяем элементы, попавшие в отсоединенную ветку по этому же алгоритму.

Есть еще один способ, заодно и балансирует дерево.
1. Рушим все связи дерева.
2. Добавляем все элементы в массив, включая новый.
3. Сортируем элементы.
4. Строим новое дерево по алгоритму - Выбираем средний элемент. Соответственно средний элемент левой стороны будет левым элементом, средний элемент правой стороны будет правым и так рекурсивно, пока все элементы не будут присоеденены.

Такое дерево будет автоматически сбалансированно.

Похожие вопросы
чем отличаються Visual Studio 2010 Professional и Visual Studio 2010 Express?
Дизайнер форм Visual Studio 2010
с++.Трехмерный массив. Visual Studio 2010
Проблема с C++ Visual studio 2010
Помогите с visual studio 2010 вылетает ошибка
Ошибка при компиляции в visual studio 2010
Microsoft Visual Studio 2010
Помогите написать программу в visual studio 2010
Какая среда разработки вам нравится больше - Visual Studio 2010 или Visual Studio 2012?
Как в Visual Studio 2010, включить нумерование строк? Как в Visual Studio 2010, включить нумерование строк?