Вопрос № 176070: Уважаемые эксперты. Нужна помощь с бинарным деревом. Нужно написать процедуру которая меняет местами максмальный и минимальный элемент дерева, и которая выводит в Edit все листы дерева. Добавление и просмотр уже есть в архиве. Пожалуйста помогите, ес...
Вопрос № 176070:
Уважаемые эксперты. Нужна помощь с бинарным деревом. Нужно написать процедуру которая меняет местами максмальный и минимальный элемент дерева, и которая выводит в Edit все листы дерева. Добавление и просмотр уже есть в архиве. Пожалуйста помогите, если можете. Заранее спасибо. Tree >>
Отвечает Сергей Бендер, 4-й класс :
Здравствуйте, Камынин Владислав Дмитриевич.
Итак. По первому пункту. Тут задача немного нескладная. С одной стороны у тебя в заготовке дерево строится упорядоченным. С другой стороны, если мы меняем местами макс. и мин. элементы, то оно заведомо перестаёт быть таковым. Я прикинул и решил всё-таки воспользоваться упорядоченностью дерева -- проще алгоритм. Т.е. циклом while идём по левым веткам до nil'а -- получаем минимум, идём по правым веткам -- получаем максимум. Но!
В этом случае команда получается "одноразовой". Т.е. если после престановки ещё добавить элементов, то новая перестановка минимума и максимума будет некорректной.
Если надо, можно переписать, сделать перестановку более общей.
По второму пункту. Это можно сделать очень просто. То же самое что и просто вывод, только с дополнительным условием (t1.ls=nil) and (t1.rs=nil)
Код в приложении. (Комментариев не писал -- думаю
, я тут уже всё объяснил.)
Проверка второго пункта. Вводим по очереди: 0 -3 5 -4 -2 -1 3 2
Получается дерево: http://rfpro.ru/upload/1378
Вывод листьев: -4,-1,2,4
Приложение:
Ответ отправил: Сергей Бендер, 4-й класс
Ответ отправлен: 18.01.2010, 18:26
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 258719
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.