Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program task3;
- { Вводим новый тип данных }
- type
- ref = ^node;
- node = record
- key: Integer;
- left, right: ref;
- end;
- { Печать содержимого бинарного дерева }
- procedure Print_Btree(w: ref; l: Integer);
- var
- i: Integer;
- begin
- if w <> Nil then
- with w^ do
- begin
- Print_Btree(right, l + 1);
- for i := 1 to l * 4 do
- write(' ');
- writeln(key);
- Print_Btree(left, l + 1);
- end;
- end;
- { Включение вершины в дерево }
- procedure insBtree(value: Integer; var tree: ref);
- begin
- if tree <> Nil then
- begin
- with tree^ do
- begin
- if key > value then
- begin
- insBtree(value, left);
- end;
- if key < value then
- begin
- insBtree(value, right);
- end;
- end;
- end
- else
- begin
- New(tree);
- tree^.left := Nil;
- tree^.right := Nil;
- tree^.key := value;
- end;
- end;
- function createTree(): ref;
- var
- tree: ref;
- value: Integer;
- begin
- tree := Nil;
- writeln('Enter values');
- {$I-}
- read(value);
- {$I+}
- while ioresult = 0 do
- begin
- insBtree(value, tree);
- {$I-}
- read(value);
- {$I+}
- end;
- Result := tree;
- end;
- function getMin(tree: ref): ref;
- begin
- if tree.left = Nil then
- begin
- Result := tree;
- end
- else
- begin
- Result := getMin(tree.left);
- end;
- end;
- function getMax(tree: ref): ref;
- begin
- if tree.right = Nil then
- begin
- Result := tree;
- end
- else
- begin
- Result := getMax(tree.right);
- end;
- end;
- procedure swapMinMax(tree: ref);
- var
- temp: Integer;
- begin
- temp := getMin(tree).key;
- getMin(tree).key := getMax(tree).key;
- getMax(tree).key := temp;
- end;
- var
- value: Integer;
- tree: ref;
- begin
- tree := createTree();
- writeln('Printing btree');
- Print_Btree(tree, 0);
- swapMinMax(tree);
- writeln('After swap');
- Print_Btree(tree, 0);
- read(value);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement