bsuir.info
БГУИР: Дистанционное и заочное обучение
(неофициальный форум)
Вход (быстрый)
Регистрация
[ Новые сообщения · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Сохранение бинарного дерева
magicdecoreДата: Суббота, 16.04.2011, 15:52 | Сообщение # 1
Абитуриент
Группа: Проверенные
Сообщений: 9
Статус: Оффлайн
ДОброго времени суток!
Помагите пожалуйста с одним вопрослом.
Есть созданное бинарное дерево, как сохранить его в файл и загрузить соответственно ???
Хотелось бы на примере ...Спасибо за помощью
Quote

program BiTree_Osipchik;

uses crt;

type
TInfo = Byte;
PItem = ^Item;
Item = record
Key: TInfo;
Left, Right: PItem;

end;
TTree = object
private
Root: PItem;
public
constructor Create;
procedure Add(Key: TInfo);
procedure Del(Key: TInfo);
procedure View;
procedure Exist(Key: TInfo);
destructor Destroy;
end;
{//-------------------------------------------------------------}
constructor TTree.Create;
begin
Root := nil;
end;
{//------------------------------------------------------------- }
procedure TTree.Add(Key: TInfo);

procedure IniTree(var P: PItem; X: TInfo);
begin
New(P);
P^.Key :=X;
P^.Left := nil;
P^.Right := nil;
end;

procedure InLeft (var P: PItem; X : TInfo);
var R : PItem;
begin
New®;
R^.Key := X;
R^.Left := nil;
R^.Right := nil;
P^.Left := R;
end;

procedure InRight (var P: PItem; X : TInfo);
var R : PItem;
begin
New®;
R^.Key := X;
R^.Left := nil;
R^.Right := nil;
P^.Right := R;
end;

procedure Tree_Add (P: PItem; X : TInfo);
var OK: Boolean;
begin
OK := false;
while not OK do begin
if X > P^.Key then
if P^.Right <> nil
then P := P^.Right
else begin
InRight (P, X);
OK := true;
end
else
if P^.Left <> nil
then P := P^.Left
else begin
InLeft(P, X);
OK := true
end;
end;
end;

begin
if Root = nil
then IniTree(Root, Key)
else Tree_Add(Root, Key);
end;
{//------------------------------------------------------------- }



Сообщение отредактировал magicdecore - Суббота, 16.04.2011, 15:53
 
  • Страница 1 из 1
  • 1
Поиск: