Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ процедура, которая меняет Max и Min элементы дерева

Автор: Слава 7.01.2007 22:00

Ребята помогите написать процедуру, которая меняет max и min элементы непустого дерева, все элементы которого различны!!

Автор: volvo 7.01.2007 22:02

Для начала вспомни, что такое минимальное, а что - максимальное значение дерева (я надеюсь, речь об упорядоченном бинарном дереве?), т.е. где именно в дереве эти элементы находятся...

Автор: Слава 7.01.2007 22:08

задача полностью звучит так :

Используя очередь или стек описать процедуру или функцию, которая : меняет местами max и min элементы непустого дерева, все элементы которого различны(ТЭД=real).

Да, я думаю речь идет об обычном упорядоченном бинарном дереве.

Автор: Гость 9.01.2007 4:33

Ребята, ну неужели никто никогда не сталкивался с такой задачей??

Автор: volvo 9.01.2007 21:30

Цитата(Слава @ 7.01.2007 17:08)
Используя очередь или стек описать процедуру или функцию, которая : меняет местами max и min элементы непустого дерева, все элементы которого различны
Зачем тут очередь, или стек - спрашивается? blink.gif Без них все прекрасно делается:

procedure change_min_max(root: ttree);

type what = (_min, _max);

procedure get_extrem(find: what; p: ttree; var p_search: ttree);
begin
if p <> nil then begin

if p_search = nil then p_search := p
else if (p^.data > p_search^.data) = boolean(ord(find)) then p_search := p;

get_extrem(find, p^.left, p_search); get_extrem(find, p^.right, p_search);

end
end;

var
T: real;
p_min, p_max: ttree;
begin
p_min := nil; get_extrem(_min, root, p_min);
p_max := nil; get_extrem(_max, root, p_max);

T := p_min^.data; p_min^.data := p_max^.data; p_max^.data := T;
end;

Автор: Слава 10.01.2007 4:16

не знаю, зачем это надо, просто такое задание smile.gif , которое уже завтра надо сдать wacko.gif

можно ещё вопрос, что у меня не правильно вот в этой процедуре:

procedure PrintTree(r: TreePointer; n: integer);
var
i:integer;
begin
if r<>nil then begin
PrintTree(r.^left, n+1);
for i := 1 to n do Write(' ');
Writeln(r^.data);
PrintTree(r^.right, n+1);
end;
end;


Пишет invalid qualifier

Автор: volvo 10.01.2007 6:01

Цитата
PrintTree(r.^left, n+1);
Поменяй местами эти 2 символа...

Автор: Слава 10.01.2007 19:17

Volvo огромное спасибо за помощь, я всё-таки вчера смог осилить эту задачу, если кому понадобиться смогу ее выслать или выложить.

Автор: MIsterIo 14.12.2009 18:54

Плиз подскажите как создать само дерево( точнее его заполнить с сылками на элементы), чтобы потом там искать мин и макс эл-ты,затем их менять, а потом печатать уже полученное в правильном порядке.

Автор: volvo 14.12.2009 22:55

Тебе сюда: http://volvo71.narod.ru/faq_folder/bin_tree.htm, там есть все, что нужно для решения твоей задачи...

Автор: Youri 18.12.2012 18:03

Цитата(Слава @ 10.01.2007 15:17) *

Volvo огромное спасибо за помощь, я всё-таки вчера смог осилить эту задачу, если кому понадобиться смогу ее выслать или выложить.


Можете выложить задачу, а то уже просто мозг кипит

Автор: -Дмитрий- 3.10.2013 5:45

Цитата(Слава @ 10.01.2007 15:17) *

Volvo огромное спасибо за помощь, я всё-таки вчера смог осилить эту задачу, если кому понадобиться смогу ее выслать или выложить.


Можешь выкинуть ее сюда?