Advertisement
Guest User

Untitled

a guest
May 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.05 KB | None | 0 0
  1. library RemoveAlgo;
  2.  
  3. uses
  4.   System.SysUtils,
  5.   System.Classes;
  6.  
  7. type
  8.    PNode = ^TNode;
  9.    TNode = record
  10.       Left: PNode;
  11.       Right: PNode;
  12.       Key: Byte;
  13.    end;
  14.  
  15. {$R *.res}
  16.  
  17. function Minimum(Node: PNode): PNode;
  18. begin
  19.    if Node.Left = nil then
  20.       Result := Node
  21.    else
  22.       Node := Minimum(Node.Left);
  23.    Result := Node;
  24. end;
  25.  
  26. function Remove(Node: PNode; Key: Byte): PNode;
  27. begin
  28.    if Node = nil then
  29.       Remove := Node;
  30.    if Key < Node.Key then
  31.       Node.Left := Remove(Node.Left, Key)
  32.    else
  33.       if Key > Node.Key then
  34.          Node.Right := Remove(Node.Right, Key)
  35.       else
  36.          if (Node.Left <> nil) and (Node.Right <> nil) then
  37.          begin
  38.             Node.Key := Minimum(Node.Right).Key;
  39.             Dispose(Minimum(Node.Right));
  40.             Node.Right := Remove(Node.Right, Node.Key);
  41.          end
  42.          else
  43.             if Node.Left <> nil then
  44.                Node := Node.Left
  45.             else
  46.                Node := Node.Right;
  47.    Remove := Node;
  48. end;
  49.  
  50. exports Remove;
  51.  
  52. begin
  53. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement