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

Бинарные деревья: дописать код ,чтобы искать число массива в бинарном дереве и время выполнения поиска - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ база данных http://www.cyberforum.ru/cpp-beginners/thread1048985.html
Биржа ведёт учёт заключённых сделок: № п. п., сторона1, сторона 2, сумма договора(тыс.руб.), дата заключения. При вводе информации о новой сделке выдавать на экран общую сумму произведённых сделок, а также записи в заданном интервале времени с подсчётом общей суммы за этот период. Должно быть в виде меню. надо сделать 3 методами: 1 массив 2 файл 3 односвязный список
C++ Сортировка стеков Надо отсортировать стек следующим образом: до максимального элемента - по возрастанию; после максимального по убыванию. Ниже приведена программа в которой вводятся элементы стека и выполняются еще другие действия, которые здесь не важны. Так же там присутствует обычная сортировка. Просьба показать сортировку на данной программе #include "stdafx.h" #include "iostream" http://www.cyberforum.ru/cpp-beginners/thread1048964.html
Вывод очереди C++
Здравствуйте, у меня такой вопрос, я создал очередь с помощью queue, можно ли вывести всю очередь, у меня получалось выводить только первый и последний элементы =\
C++ Ошибка при освобождении памяти массива string
Вот тут вот при delete возникает ошибка, и пишет "The program ' Array Template.exe: Native' has exited with code 3 (0x3)." template <class Type> void Array<Type>::operator+=(Type value) { Array<Type> tmp(*this); // сохраняем текущий массив delete theArray; // освобождаем память size++; // увеличиваем размер theArray = new Type; // создаем новый массив for (int i = 0; i < size-1;...
C++ Программа должна в себе учитывать 3 вещи: Наследование, Сортировка и Поиск по данным http://www.cyberforum.ru/cpp-beginners/thread1048950.html
Мне через пару дней нужно сдать курсовую работу, а она еще не готова. Я в отчаянье! Кто может у кого есть подобна программа поделитесь пожалуйста. Программа должна в себе учитывать 3 вещи: Наследование, Сортировка и Поиск по данным. Размер программы не важен лишь бы она работала и выполняла определенные функции которые указаны выше. Заранее большое спасибо.
C++ Задача на строки Здравствуйте. Мне на завтра несколько задач нужно дорешать, решила сама уже на нахождение количества разделителей в строке и на матрицы, осталась еще одна, завтра последний день сдачи((( сама признаюсь честно не смогу решить эту задачу. Помогите пожалуйста подробнее

Показать сообщение отдельно
Андрей445232
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 8

Бинарные деревья: дописать код ,чтобы искать число массива в бинарном дереве и время выполнения поиска - C++

19.12.2013, 21:30. Просмотров 245. Ответов 0
Метки (Все метки)

Код реализации:
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
// Авл деревья 2.cpp: определяет точку входа для консольного приложения.
//бинарное дерево
 
#include "stdafx.h"
//Программа формирует дерево из массива целых чисел и выводит его на экран
//root - корень дерева
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;
int const x = 50;
struct Node{
        int d;         //Данные элемента
        Node *left;    //Ссылка на левое поддерево
        Node *right;   //Ссылка на правое поддерево
};
Node *first(int d);                    //Формирование первого элемента
Node *search_insert(Node *root,int d); //Поиск с включением
void print_tree(Node *root,int l);     //Обход дерева
 
//-------------------------------------------
int main()
{
        int arr[100];
        srand(time (NULL));
        for (int i=0;i<100;i++)
            arr[i] = rand () %201;
        Node *root=first(arr[0]);    //Формируем корень дерева
      //Ищем место куда вставить и вставляем новые элементы
      for(int i=1;i<100;i++)search_insert(root,arr[i]); 
        print_tree(root,0);            //вывод дерева на экран
        getch();
        return 0;
}
 
//--------------------------------------------
//Формирование первого элемента
Node *first(int d){
Node *pv =new Node;   //Создаём элемент
pv->d=d;              //Присваиваем значение элементу поля
pv->left=0;           //Ссылка на левое поддерево равна NULL
pv->right=0;          //Ссылка на правое поддерево равна NULL
return pv;            //Возвращаем адрес элемента
}
 
//---------------------------------------------
 
//Поиск с включением
Node *search_insert(Node *root,int d){
Node*pv=root,*prev;
bool found = false;    //Переменная отвечающая за то что нашли ли элемент или нет
/*Ниже приведён алгоритм поиска короче если нашли такой же элемент то мы его не вставляем в дерево выходим из функции возвратив адрес совпавшего элемента*/
while(pv&&!found){
        prev=pv;                       //получаем адрес элемента от которого будем пускать корни
        if(d==pv->d)found=true;        //совпадение выходим из цикла
        else if(d<pv->d)pv=pv->left;   //Всовываемя в левое поддерево
        else pv=pv->right;             //Всовываемя в правое поддерево 
//Выход из цикла осуществляется, тогда когда нашли свободный адрес : ссылку у дерева : для вставки нового узла */
}
//---------------------------
/*Если совпало значение элемента со значением элемента который хотим вставить то выходим из функции возвращая адрес элемента
с которым совпало */
if(found)return pv;               
//Создание нового узла
Node *pnew =new Node;
pnew->d=d;
pnew->left=0;
pnew->right=0;
if(d<prev->d)
//Присоединение к левому поддереву предка
prev->left=pnew;
else 
//присоединяем к правому поддереву предка
prev->right=pnew;
return pnew;
}
//---------------------------------------
//Обход дерева
void print_tree(Node *p,int level){
        if(p){
               print_tree(p->right,level+1);          //Перемещение по правым поддеревьям     
                for(int i=0;i<level;i++)cout<<"   ";
                cout<<p->d<<'\n';                      //вывод значений дерева
                  print_tree(p->left,level+1);           //Перемещение по левым поддеревьям
                
     }
}[CPP]
[/CPP]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru