Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library RemoveAlgo;
- uses
- System.SysUtils,
- System.Classes;
- type
- PNode = ^TNode;
- TNode = record
- Left: PNode;
- Right: PNode;
- Key: Byte;
- end;
- {$R *.res}
- function Minimum(Node: PNode): PNode;
- begin
- if Node.Left = nil then
- Result := Node
- else
- Node := Minimum(Node.Left);
- Result := Node;
- end;
- function Remove(Node: PNode; Key: Byte): PNode;
- begin
- if Node = nil then
- Remove := Node;
- if Key < Node.Key then
- Node.Left := Remove(Node.Left, Key)
- else
- if Key > Node.Key then
- Node.Right := Remove(Node.Right, Key)
- else
- if (Node.Left <> nil) and (Node.Right <> nil) then
- begin
- Node.Key := Minimum(Node.Right).Key;
- Dispose(Minimum(Node.Right));
- Node.Right := Remove(Node.Right, Node.Key);
- end
- else
- if Node.Left <> nil then
- Node := Node.Left
- else
- Node := Node.Right;
- Remove := Node;
- end;
- exports Remove;
- begin
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement