Помощь - Поиск - Пользователи - Календарь
Полная версия: Добавление нового элемента в двоичное дерево поиск
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Гость_HelpAusHeaven
У кого-нить есть готовая рекурсивная функция для добавления элемента в двоичное дерево поиска?? (отсортированное... добавление не нарушая порядка...)
Altair
Посмотрите по этому адресу:
FAQ: Динамические структуры данных (Деревья)
HelpAusHeaven
О! Как раз то, что мне надо. Спасибо!!
А как на счет красивого вывода, хотя бы текстового с уровнями?
К примеру:
X1|-----------|
__X2|---------|
____X3|-------|
__X4|---------|

В общем так или иначе, спасибо за функции!
Altair
Цитата
В общем так или иначе, спасибо за функции!

Спасибо! Стараюсь!
Красивый вывод БУДЕТ!
HelpAusHeaven
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);
......


При выполнении этого кода у меня в "поиске" выдается сообщение, что дерево пустое...
Оно пустое, скорее всего, из-за того, что указатель MyTree стоит уже не на вершине дерева, а на одном из "листов" дерева (одной из конечных точек дерева)...
Как мне поправить эту ситуацию?
Заводить ещё одну переменную для хранения адреса памяти вершины дерева?? Или есть другой способ...??
HelpAusHeaven
Цитата(Oleg_Z @ 14.04.04 16:33)
Спасибо! Стараюсь!
Красивый вывод БУДЕТ!

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