О! Как раз то, что мне надо. Спасибо!! А как на счет красивого вывода, хотя бы текстового с уровнями? К примеру: X1|-----------| __X2|---------| ____X3|-------| __X4|---------|
В общем так или иначе, спасибо за функции!
Altair
14.04.2004 16:33
Цитата
В общем так или иначе, спасибо за функции!
Спасибо! Стараюсь! Красивый вывод БУДЕТ!
HelpAusHeaven
14.04.2004 17:16
type
TTree=^TNode;
TNode = record
Int : Integer;
Left, Right : TTree;
end;
var MyTree : TTree;
procedure Add(var Tree: TTree; i: integer);
beginif Tree <> nilthenbeginif Tree.Int < i then Add(Tree.Right,i)
elseif Tree.Int > i then Add(Tree.Left,i)
endelsebegin
new(Tree);
Tree.Int:=i;
Tree.Left:=nil;
Tree.Right:=nil;
endend;
function TForm1.Find(var Tree: TTree; i: integer):boolean;
beginif Tree <> nilthenbeginif Tree.Int < i then Find(Tree.Right,i)
elseif Tree.Int > i then Find(Tree.Left,i)
elseif Tree.Int = i then ShowMessage('I found it!');
endelse ShowMessage('Tree is empty:(');
end;
......
Add(MyTree,5);
Add(MyTree,7);
... ... ...
Add(MyTree,3);
Find(MyTree,7);
......
При выполнении этого кода у меня в "поиске" выдается сообщение, что дерево пустое... Оно пустое, скорее всего, из-за того, что указатель MyTree стоит уже не на вершине дерева, а на одном из "листов" дерева (одной из конечных точек дерева)... Как мне поправить эту ситуацию? Заводить ещё одну переменную для хранения адреса памяти вершины дерева?? Или есть другой способ...??
HelpAusHeaven
14.04.2004 23:21
Цитата(Oleg_Z @ 14.04.04 16:33)
Спасибо! Стараюсь! Красивый вывод БУДЕТ!
За ранее спасибо!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.