WriteLn ('Такого елемента в дереві немає');
end;
begin
Delete (Root, Key);
end;
// --------------------------------------------- ----------------
procedure TTree.View;
procedure PrintTree (R: PItem; L: Byte);
var i: Byte;
begin
if R <> nil then begin
PrintTree (R ^. Right, L + 3);
for i: = 1 to L do
Write ('');
WriteLn (R ^. Key);
PrintTree (R ^. Left, L + 3);
end;
end;
begin
PrintTree (Root, 1);
end;
// --------------------------------------------- ----------------
procedure TTree.Exist (Key: TInfo);
procedure Search (var P: PItem; X: TInfo);
begin
if P = nil then begin
WriteLn ('Такого елемента немає ');
end else
if X> P ^. Key then// шукається в правому поддереве
Search (P ^. Right, X)
else
if X
Search (P ^. Left, X)
else
WriteLn ('Є такий елемент ');
end;
begin
Search (Root, Key);
end;
// --------------------------------------------- ----------------
destructor TTree.Destroy;
procedure Node_Dispose (P: PItem);
// Видалення вузла і всіх його нащадків у дереві
begin
if P <> nil then begin
if P ^. Left <> nil then
Node_Dispose (P ^. Left);
if P ^. Right <> nil then
Node_Dispose (P ^. Right);
Dispose (P);
end;
end;
begin
Node_Dispose (Root);
end;
// --------------------------------------------- ----------------
procedure InputKey (S: String; var Key: TInfo);
begin
WriteLn (S);
ReadLn (Key);
end;
var
Tree: TTree;
N: Byte;
Key: TInfo;
begin
Tree: = TTree.Create;
repeat
WriteLn ('1-Додати елемент в дерево ');
WriteLn ('2-Видалити елемент ');
WriteLn ('3-Вивести вузли дерева ');
WriteLn ('4-Перевірити існування вузла ');
WriteLn ('5-Вихід ');
ReadLn (n);
with Tree do begin
case N of
1: begin
InputKey ('Введіть значення додається елемента', Key);
Add (Key);
end;
2: begin
InputKey ('Введіть значення видаляється елемента', Key);
Del (Key);
end;
3: View;
4: begin
InputKey ('Введіть елемент, існування якого ви хочете перевірити ', Key);
Exist (Key);
end;
end;
end;
until N = 5;
Tree.Destroy;
end.
# include