IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Бинарное дерево (который раз), Нужна помощ с одной процедурой
onizuka1988
сообщение 22.12.2006 12:18
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Здравствуйте, искал уже подобную задачу, нашёл модуль для работы с ней, но там нету одной процедуры.
Вот сама задача:
Разработайте программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызывае-мые из меню:
- построение пустого дерева;
- добавление нового элемента;
- удаление указанного поддерева;
- просмотр дерева в следующем порядке: левая ветвь, узел, правая ветвь.
А вот там процедура которой у меня нету - удаление указанного поддерева
Буду очень благодарен, если кто нибуть поможеш с данной программой (желательно целиком, но если нет - то можно и процедуру).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 24.12.2006 18:55
Сообщение #2


Гость






А теперь подними глаза и перечитай мой пост выше... Ты сделал с точностью "до наоборот" - то, что я НЕ просил - ты привел, а то, что я ПРОСИЛ - нет... Вот и я сделаю точно так же - я не буду ничего отвечать, пока ты не научишься ЧИТАТЬ ответы... Я ж не просто так прошу тебя привести ТВОЙ вариант, неужели же не ясно??? Я все сделаю правильно (создание дерева, поиск поддерева), удалю как положено - приведу тебе функцию, ты скажешь "НЕ работает"... Мне это надо? Не надо... Вот и приведи СВОЕ заполнение/поиск поддерева (не надо всю программу, меня твой интерфейс НЕ ИНТЕРЕСУЕТ, я не могу читать программы с тем интерфейсом, который вы на него навешиваете - суть алгоритма теряется) - ТОЛЬКО заполнение дерева данными (причем сами данные - тоже), и поиск, ЧЕГО будем удалять...
 К началу страницы 
+ Ответить 
onizuka1988
сообщение 24.12.2006 19:08
Сообщение #3





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Цитата(volvo @ 24.12.2006 17:55) *

А теперь подними глаза и перечитай мой пост выше... Ты сделал с точностью "до наоборот" - то, что я НЕ просил - ты привел, а то, что я ПРОСИЛ - нет... Вот и я сделаю точно так же - я не буду ничего отвечать, пока ты не научишься ЧИТАТЬ ответы... Я ж не просто так прошу тебя привести ТВОЙ вариант, неужели же не ясно??? Я все сделаю правильно (создание дерева, поиск поддерева), удалю как положено - приведу тебе функцию, ты скажешь "НЕ работает"... Мне это надо? Не надо... Вот и приведи СВОЕ заполнение/поиск поддерева (не надо всю программу, меня твой интерфейс НЕ ИНТЕРЕСУЕТ, я не могу читать программы с тем интерфейсом, который вы на него навешиваете - суть алгоритма теряется) - ТОЛЬКО заполнение дерева данными (причем сами данные - тоже), и поиск, ЧЕГО будем удалять...

Ясно, вот тип дерева:

type PTree = ^TTree;
TTree = record
info:byte;
left,right: PTree;
end;


Вот добавление элемента:
 procedure addelem(var root:PTree;info:byte);
var elem:PTree;
begin
if (root=NIL) then (* Если дерево пустое, то *)
begin
new(elem); (* Создать новый лист *)
elem^.left:=NIL;
elem^.right:=NIL;
elem^.info:=info; (* Записать туда значение требуемого элемента *)
root:=elem; (* Присоединить новый лист вместо пустого дерева *)
end
else (* Иначе *)
begin
if (info<root^.info) then (* Если добавляемое значение меньше текущего узла, то *)
addelem(root^.left,info) (* Добавить его в левое поддерево *)
else (* Иначе *)
addelem(root^.right,info); (* Добавить его в правое поддерево *)
end;
end;


Вот процедура для введение значения:
 function getint(ident:string):byte;
var s:byte;
begin
write('Введите ',ident,' : ');
readln(s);
getint:=s;
end;


Процедура удаление запускается с помощью
 
7: Delete(Tree,getint('элемент для удаления'));


Поиск поддерева я считаю не нужен, просто вводим значение элемента и удаляемся всё что снизу от него.
Надеюсь на этот раз я правильно ответил? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"