У кого-нить есть готовая рекурсивная функция для добавления элемента в двоичное дерево поиска?? (отсортированное... добавление не нарушая порядка...)
Посмотрите по этому адресу:
http://forum.pascal.net.ru/index.php?showtopic=2706&view=findpost&p=28334
О! Как раз то, что мне надо. Спасибо!!
А как на счет красивого вывода, хотя бы текстового с уровнями?
К примеру:
X1|-----------|
__X2|---------|
____X3|-------|
__X4|---------|
В общем так или иначе, спасибо за функции!
type
TTree=^TNode;
TNode = record
Int : Integer;
Left, Right : TTree;
end;
var MyTree : TTree;
procedure Add(var Tree: TTree; i: integer);
begin
if Tree <> nil then begin
if Tree.Int < i then Add(Tree.Right,i)
else if Tree.Int > i then Add(Tree.Left,i)
end else begin
new(Tree);
Tree.Int:=i;
Tree.Left:=nil;
Tree.Right:=nil;
end
end;
function TForm1.Find(var Tree: TTree; i: integer):boolean;
begin
if Tree <> nil then begin
if Tree.Int < i then Find(Tree.Right,i)
else if Tree.Int > i then Find(Tree.Left,i)
else if Tree.Int = i then ShowMessage('I found it!');
end else ShowMessage('Tree is empty:(');
end;
......
Add(MyTree,5);
Add(MyTree,7);
... ... ...
Add(MyTree,3);
Find(MyTree,7);
......