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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2019, 13:42   #1
Bonttpol
 
Регистрация: 26.02.2019
Сообщений: 7
Вопрос Реализация дерева поиска списком сыновей

Добрый день!
Мне было дано задание с двоичными деревьями поиска.Деревья должны быть представлены "списком сыновей". Покопавшись в гугле удалось найти лишь одну статью с подобной реализацией на Паскале. Код понять и переписать на С/С++ мне так и не удалось.
Помогите написать и разобраться в подобной структуре на С++.
Заранее благодарю.
Bonttpol вне форума Ответить с цитированием
Старый 26.02.2019, 13:56   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Bonttpol Посмотреть сообщение
"списком сыновей"
Цитата:
Сообщение от Bonttpol Посмотреть сообщение
удалось найти лишь одну статью с подобной реализацией
это ж вроде самый стандартный способ? Или что там за список?

Просто выкиньте это из поискового запроса.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.02.2019, 14:01   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Один из стандартных. Только я так вопроса и не нашел в посте. Что не понятно? Что не получилось?
p51x вне форума Ответить с цитированием
Старый 26.02.2019, 15:49   #4
Bonttpol
 
Регистрация: 26.02.2019
Сообщений: 7
По умолчанию

Я не знаю как это написать на С++. Поэтому и прошу помощи в написании кода.
У меня есть вот такая структура дерева и функция заполнения:
Код:
struct  node
{
	double info; 
	node *l; 
	node *r; 
};

void push(int a, node **t)
{
	if ((*t) == NULL)                   
	{
		(*t) = new node;                
		(*t)->info = a;                 
		(*t)->l = (*t)->r = NULL;    
		return;                        
	}
	if (a > (*t)->info) push(a, &(*t)->r);
	else push(a, &(*t)->l);         
}
Но это реализация дерева основанная на "указателе на родителя" и про список здесь ничего нет. А как мне написать структуру "списком сыновей" я не знаю. Может кто-то здесь знает как это делать и подскажет мне?
Bonttpol вне форума Ответить с цитированием
Старый 27.02.2019, 11:11   #5
Bonttpol
 
Регистрация: 26.02.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Один из стандартных.
А Вы не могли бы мне его написать?
Bonttpol вне форума Ответить с цитированием
Старый 27.02.2019, 13:10   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Что именно вам написать? Заводите список списков для вершин и сыновей. Ну или т.к. дерево бианрное список по два элемента.
p51x вне форума Ответить с цитированием
Старый 27.02.2019, 14:10   #7
Bonttpol
 
Регистрация: 26.02.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что именно вам написать?
Что-то типа этого?
Код:
		int a[m] = { 0 };
		cout << "Введите 256, чтобы остановить заполнение дерева " << endl;
		for (i = 0; i < n; i++)
		{

			cout << "Введите a[" << i << "] : ";
			cin >> a[i];
			v++;
			if (a[i] == 256) { break; }
		}
Bonttpol вне форума Ответить с цитированием
Старый 27.02.2019, 14:18   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А причем тут массив? Вы знаете, что такое дерево? Бинарное дерево? Как оно строится?
p51x вне форума Ответить с цитированием
Старый 27.02.2019, 14:28   #9
Bonttpol
 
Регистрация: 26.02.2019
Сообщений: 7
По умолчанию

Да. Бинарное дерево реализуется на основе структуры типа
Код:
struct  node
{
	double info; 
	node *l; 
	node *r; 
};
Вот. Но это не реализация дерева список сыновей. Кажется. Потому что я основываюсь что реализация список сыновей показана на этом сайте на Паскале http://bookwu.net/book_algoritmy-str...piskov-synovejЯ не понимаю как это переписать на С++.
Точнее так -я не знаю как пишется дерево на основе списка сыновей.

Последний раз редактировалось Bonttpol; 27.02.2019 в 14:37.
Bonttpol вне форума Ответить с цитированием
Старый 27.02.2019, 14:39   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Например, как std::vector<std::array<NODE, 2>>
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация бинарного дерева на C# NastyaShuvalova C# (си шарп) 0 25.02.2014 19:24
Реализация дерева +XML mdekalka Общие вопросы .NET 0 30.11.2012 02:04
Реализация дерева на HTML mimm HTML и CSS 3 19.10.2012 08:52
Реализация Б-дерева VB Army Помощь студентам 3 19.06.2011 14:47
Бинарное дерева поиска lebrosha Помощь студентам 7 23.05.2009 15:27