Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2016, 19:28   #1
Pinguin007
Пользователь
 
Регистрация: 26.02.2016
Сообщений: 14
По умолчанию Двоичное дерево поиска

Помогите вставить в этот код
Код:
# include <iostream>
# include <conio.h>
using namespace std;

//Наша структура
struct node
{
	int info; //Информационное поле
	node *l, *r;//Левая и Правая часть дерева
};

node * tree = NULL; //Объявляем переменную, тип которой структура Дерево


					/*ФУНКЦИЯ ЗАПИСИ ЭЛЕМЕНТА В БИНАРНОЕ ДЕРЕВО*/
void push(int a, node **t)
{
	if ((*t) == NULL) //Если дерева не существует
	{
		(*t) = new node; //Выделяем память
		(*t)->info = a; //Кладем в выделенное место аргумент a
		(*t)->l = (*t)->r = NULL; //Очищаем память для следующего роста
		return; //Заложили семечко, выходим
	}
	//Дерево есть
	if (a>(*t)->info) push(a, &(*t)->r); //Если аргумент а больше чем текущий элемент, кладем его вправо
	else push(a, &(*t)->l); //Иначе кладем его влево
}

/*ФУНКЦИЯ ОТОБРАЖЕНИЯ ДЕРЕВА НА ЭКРАНЕ*/
void print(node *t, int u)
{
	if (t == NULL) return; //Если дерево пустое, то отображать нечего, выходим
	else //Иначе
	{
		print(t->l, ++u);//С помощью рекурсивного посещаем левое поддерево
		for (int i = 0; i<u; ++i) cout << "";
		cout << t->info << endl; //И показываем элемент
		u--;
	}
	print(t->r, ++u); //С помощью рекурсии посещаем правое поддерево
}

void main()
{
	setlocale(LC_ALL, "Russian");
	int n; //Количество элементов
	int s; //Число, передаваемое в дерево
	cout << "введите количество элементов  ";
	cin >> n; //Вводим количество элементов

	for (int i = 0; i<n; ++i)
	{
		cout << "ведите число  ";
		cin >> s; //Считываем элемент за элементом

		push(s, &tree); //И каждый кладем в дерево
	}
	cout << "ваше дерево\n";
	print(tree, 0);
	delete(tree);
	_getch();
}
Эту процедуру
Код:
Node search(x : Node, k : T):
   if x == null or k == x.key
      return x
   if k < x.key
      return search(x.left, k)
   else
      return search(x.right, k)
Чтобы все работала.
Надеюсь вы поможете
Pinguin007 вне форума Ответить с цитированием
Старый 17.10.2016, 19:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Эту процедуру
функцию

Код:
print(tree, 0);
auto el = search(tree, 100000);
...
delete(tree);
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать двоичное дерево поиска. Си Yakoff Помощь студентам 4 12.06.2013 21:45
Двоичное дерево поиска Anubys Общие вопросы C/C++ 1 03.10.2012 21:19
Двоичное дерево поиска SkyArcher C# (си шарп) 0 21.05.2011 20:05
Двоичное дерево поиска в С++ Madara88 C++ Builder 0 14.04.2011 09:33
Двоичное дерево поиска Madara88 Помощь студентам 0 14.04.2011 09:29