Akaleaf

Untitled

Jan 23rd, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.56 KB | None | 0 0
  1. program PerfectBalancedTree;
  2.  
  3. type
  4.   pSTreeNode = ^TSTreeNode;
  5.   TSTreeNode = record
  6.     info : integer;
  7.     key : integer;
  8.     left : pSTreeNode;
  9.     right : pSTreeNode;
  10.   end;
  11.  
  12. var
  13.   pRoot, pPerm : pSTreeNode;
  14.   answer, key : integer;
  15.  
  16. function searchTheNode(key : integer) : pSTreeNode;
  17. var
  18.   pTemp : pSTreeNode;
  19. begin
  20.   pTemp := pRoot;
  21.   if (pTemp^.key = key) then
  22.   begin
  23.     searchTheNode := pPerm;
  24.   end else
  25.   if (pTemp^.key > key) then
  26.   begin
  27.     if (pTemp^.left <> nil) then
  28.     begin
  29.       pTemp := pTemp^.left;
  30.       searchTheNode(key);
  31.     end else
  32.     begin
  33.       searchTheNode := pPerm;
  34.     end;
  35.   end else
  36.   if (pTemp^.key < key) then
  37.   begin
  38.     if (pTemp^.right <> nil) then
  39.     begin
  40.       pTemp := pTemp^.right;
  41.       searchTheNode(key);
  42.     end else
  43.     begin
  44.       searchTheNode := pPerm;
  45.     end;
  46.   end;
  47. end;
  48.  
  49. procedure addTheNode(key : integer);
  50. var
  51.   pTemp, pNew : pSTreeNode;
  52. begin
  53.   new(pNew);
  54.   pNew^.info := key;
  55.   pNew^.key := key;
  56.   pNew^.left := nil;
  57.   pNew^.right := nil;
  58.   if (pRoot = nil) then
  59.   begin
  60.     pRoot := pNew;
  61.   end else
  62.   begin
  63.     pTemp := searchTheNode(key);
  64.     if (pTemp^.key > key) then
  65.     begin
  66.       pTemp^.left := pNew;
  67.     end else
  68.     if (pTemp^.key < key) then
  69.     begin
  70.       pTemp^.right := pNew;
  71.     end;
  72.   end;
  73. end;
  74.  
  75. begin
  76.   pRoot := nil;
  77.   repeat
  78.     writeln('1. add');
  79.     writeln('2. search');
  80.     readln(answer);
  81.     if answer = 1 then
  82.     begin
  83.       write('key: ');
  84.       readln(key);
  85.       addTheNode(key);
  86.     end;
  87.   until answer = 3;
  88. end.
Advertisement
Add Comment
Please, Sign In to add comment