Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.97 KB | None | 0 0
  1. program task3;
  2.  
  3. { Вводим новый тип данных }
  4. type
  5.   ref = ^node;
  6.  
  7.   node = record
  8.     key: Integer;
  9.     left, right: ref;
  10.   end;
  11.  
  12.   { Печать содержимого бинарного дерева }
  13. procedure Print_Btree(w: ref; l: Integer);
  14. var
  15.   i: Integer;
  16. begin
  17.   if w <> Nil then
  18.     with w^ do
  19.     begin
  20.       Print_Btree(right, l + 1);
  21.       for i := 1 to l * 4 do
  22.         write(' ');
  23.       writeln(key);
  24.       Print_Btree(left, l + 1);
  25.     end;
  26. end;
  27.  
  28. { Включение вершины в дерево }
  29. procedure insBtree(value: Integer; var tree: ref);
  30. begin
  31.   if tree <> Nil then
  32.   begin
  33.     with tree^ do
  34.     begin
  35.       if key > value then
  36.       begin
  37.         insBtree(value, left);
  38.       end;
  39.       if key < value then
  40.       begin
  41.         insBtree(value, right);
  42.       end;
  43.     end;
  44.   end
  45.   else
  46.   begin
  47.     New(tree);
  48.     tree^.left := Nil;
  49.     tree^.right := Nil;
  50.     tree^.key := value;
  51.   end;
  52. end;
  53.  
  54. function createTree(): ref;
  55. var
  56.   tree: ref;
  57.   value: Integer;
  58.  
  59. begin
  60.   tree := Nil;
  61.   writeln('Enter values');
  62. {$I-}
  63.   read(value);
  64. {$I+}
  65.   while ioresult = 0 do
  66.   begin
  67.     insBtree(value, tree);
  68. {$I-}
  69.     read(value);
  70. {$I+}
  71.   end;
  72.  
  73.   Result := tree;
  74. end;
  75.  
  76. function getMin(tree: ref): ref;
  77. begin
  78.   if tree.left = Nil then
  79.   begin
  80.     Result := tree;
  81.   end
  82.   else
  83.   begin
  84.     Result := getMin(tree.left);
  85.   end;
  86. end;
  87.  
  88. function getMax(tree: ref): ref;
  89. begin
  90.   if tree.right = Nil then
  91.   begin
  92.     Result := tree;
  93.   end
  94.   else
  95.   begin
  96.     Result := getMax(tree.right);
  97.   end;
  98. end;
  99.  
  100. procedure swapMinMax(tree: ref);
  101. var
  102.   temp: Integer;
  103. begin
  104.   temp := getMin(tree).key;
  105.   getMin(tree).key := getMax(tree).key;
  106.   getMax(tree).key := temp;
  107. end;
  108.  
  109. var
  110.   value: Integer;
  111.   tree: ref;
  112.  
  113. begin
  114.   tree := createTree();
  115.   writeln('Printing btree');
  116.   Print_Btree(tree, 0);
  117.  
  118.   swapMinMax(tree);
  119.   writeln('After swap');
  120.   Print_Btree(tree, 0);
  121.   read(value);
  122.  
  123. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement