Ребята помогите написать процедуру, которая меняет max и min элементы непустого дерева, все элементы которого различны!!
Для начала вспомни, что такое минимальное, а что - максимальное значение дерева (я надеюсь, речь об упорядоченном бинарном дереве?), т.е. где именно в дереве эти элементы находятся...
задача полностью звучит так :
Используя очередь или стек описать процедуру или функцию, которая : меняет местами max и min элементы непустого дерева, все элементы которого различны(ТЭД=real).
Да, я думаю речь идет об обычном упорядоченном бинарном дереве.
Ребята, ну неужели никто никогда не сталкивался с такой задачей??
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;
не знаю, зачем это надо, просто такое задание , которое уже завтра надо сдать
можно ещё вопрос, что у меня не правильно вот в этой процедуре:
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 огромное спасибо за помощь, я всё-таки вчера смог осилить эту задачу, если кому понадобиться смогу ее выслать или выложить.
Плиз подскажите как создать само дерево( точнее его заполнить с сылками на элементы), чтобы потом там искать мин и макс эл-ты,затем их менять, а потом печатать уже полученное в правильном порядке.
Тебе сюда: http://volvo71.narod.ru/faq_folder/bin_tree.htm, там есть все, что нужно для решения твоей задачи...