Помощь - Поиск - Пользователи - Календарь
Полная версия: процедура, которая меняет Max и Min элементы дерева
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Слава
Ребята помогите написать процедуру, которая меняет max и min элементы непустого дерева, все элементы которого различны!!
volvo
Для начала вспомни, что такое минимальное, а что - максимальное значение дерева (я надеюсь, речь об упорядоченном бинарном дереве?), т.е. где именно в дереве эти элементы находятся...
Слава
задача полностью звучит так :

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

Да, я думаю речь идет об обычном упорядоченном бинарном дереве.
Гость
Ребята, ну неужели никто никогда не сталкивался с такой задачей??
volvo
Цитата(Слава @ 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;
Слава
не знаю, зачем это надо, просто такое задание 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
Цитата
PrintTree(r.^left, n+1);
Поменяй местами эти 2 символа...
Слава
Volvo огромное спасибо за помощь, я всё-таки вчера смог осилить эту задачу, если кому понадобиться смогу ее выслать или выложить.
MIsterIo
Плиз подскажите как создать само дерево( точнее его заполнить с сылками на элементы), чтобы потом там искать мин и макс эл-ты,затем их менять, а потом печатать уже полученное в правильном порядке.
volvo
Тебе сюда: Бинарные деревья, там есть все, что нужно для решения твоей задачи...
Youri
Цитата(Слава @ 10.01.2007 15:17) *

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


Можете выложить задачу, а то уже просто мозг кипит
-Дмитрий-
Цитата(Слава @ 10.01.2007 15:17) *

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


Можешь выкинуть ее сюда?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.