С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
graf1
2 / 0 / 1
Регистрация: 22.03.2010
Сообщений: 18
#1

бинарные деревья - C++

03.02.2011, 21:32. Просмотров 2668. Ответов 28
Метки нет (Все метки)

Вершина двоичного дерева содержит указатель на строку и указатели на правое и левое поддеревья. Строки в дереве упорядочены по возрастанию. Написать функции включения строки и получения указателя на строку по заданному номеру, который строки имеет в упорядоченной последовательности.

заранее спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2011, 21:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос бинарные деревья (C++):

Бинарные деревья - C++
Доброго времени суток, нужна помощь, дали задание...Вершина бинарного дерева содержит ключ, строку и два указателя на потомков.Составить...

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

Бинарные деревья - C++
Компилятор выдаёт ошибки в 9, 10 и 12, 13 строках: invalid conversion from 'int' to 'sNode*' Подскажите пожалуйста, что не так. ...

Бинарные деревья - C++
Возникла проблема с бинарными деревьями . Нужно определить K - количество узлов, ключ которых больше заданного числа N. Я дошёл только до...

Бинарные деревья - C++
Очень нужна помощь, вообще деревья не понимаю!!!:( Вершина дерева содержит указатель на строку и N указателей на потомков. Функция...

Бинарные деревья - C++
Вот задачка: Для заданного бинарного дерева поиска проверить условие: • для каждой вершины высота левого поддерева отличается от...

28
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 12:46 #16
silent_1991, это не спор, это попытка найти оптимальное решение. Мне интересно, вот и копаю.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
04.02.2011, 12:47 #17
volovzi, я всегда со всеми структурами данных так делал, отдельно описывал узел, отдельно обёртку. И у многих авторов обучающей литературы этот подход встречал.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 12:50 #18
В случае дерева вообще не нужен тип всего контейнера, всё делает класс узла. Да и к любым другим спискам это тоже относится. Разделить же на два типа можно только тип поля данных и класс узла. Кстати, это разделение как раз и целесообразно и не только для списков.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 12:55 #19
taras atavin, контейнер не обязателен, но весьма полезен. Он хранит первый элемент, а так же дополнительные данные (последний элемент, размер и т.п.).
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 12:58 #20
Ну если только для дополнительных данных, но последний элемент имеет хоть какой то смысл только у линейных списков. Во что тогда превращается тип дерева? В оболочку только лишь для указателя на корень, чей тип и так описан.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 13:07 #21
Сейчас подумал — всё-таки средствами одного узла балансировку не осуществишь, нужно вмешательство извне. Поэтому, во-первых, без оболочки неудобно, а во-вторых, оболочка неотделима от самого узла.
Так что и универсальности не получится, и без оболочки не обойтись.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 13:09 #22
А в чём такая уж проблема всё сделать методом корня? Причём, можно будет балансировать и отдельно избранные поддеревья, вызывая тот же метод но через указатели уже на их корни.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 13:11 #23
taras atavin, проблема в том, что после балансировки корнем может стать другой узел.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 13:14 #24
Хорошо, путь друг корня балансирует и переписывает при этом указатель на корень.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 13:15 #25
taras atavin, вот как раз эту функцию и будет выполнять оболочка .
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 13:15 #26
Только зачем? Лучше всего пусть корнем остаётся тот же самый узел по старому месту, но уже с другими данными.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 13:16 #27
taras atavin, напиши код, как ты это собираешься реализовывать.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.02.2011, 13:20 #28
А как ты в оболочке хочешь это реализовать? Вот смену корня заменяешь обменом данных.
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
04.02.2011, 13:49 #29
taras atavin, обмен данных — плохая идея, потому что они могут долго копироваться. И ты уходишь от вороса: напиши, пожалуйста, реализацию без оболочки.
0
04.02.2011, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2011, 13:49
Привет! Вот еще темы с ответами:

Бинарные деревья - C++
Здравствуйте! Подскажите, правильно ли написано правое удаление вершины дерева? if(tree1->Right){ if(tree1->Right->Left==NULL){ ...

Бинарные деревья - C++
1)Написать программу подсчета числа вершин в бинарном дереве 2)Написать программу копирования одного бинарного дерева в другое ...

Бинарные деревья С++ - C++
Добрый день! Дали такое задание на лабораторную работу. кое-что получилось, а в остальном прошу Вас помочь... Из входной...

Бинарные деревья - C++
Здравствуйте господа. Очень нуждаюсь в вашей помощи по бинарным деревьям. Собственно, имеется задание: Создать бинарное дерево которое...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

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