Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type binaryTree = record
- value, count, key: integer;
- left, right: ^binaryTree;
- end;
- function CountOfLevels(tree: ^binaryTree):integer;
- var l,r,x:integer;
- begin
- if tree <> nil then begin
- l:=CountOfLevels(tree^.left);
- r:=CountOfLevels(tree^.right);
- if l < r then x:=r
- else x:=l;
- CountOfLevels:=x+1;
- end
- else
- CountOfLevels:=0;
- end;
- procedure add(value: integer; var tree: ^binaryTree);
- var temp: ^binaryTree;
- begin
- if tree = nil then begin
- new(temp);
- temp^.left := nil; temp^.right := nil; temp^.value := value;
- tree := temp;
- end
- else begin
- if tree^.value > value then add(value, tree^.left)
- else add(value, tree^.right);
- end;
- end;
- procedure Print_Btree (var tree: ^binaryTree; l: integer);
- var i : integer;
- begin
- if (tree <> Nil) then
- with tree^ do
- begin
- Print_Btree(right,l+1);
- for i:= 1 to l*4 do
- write(' ');
- // writeln('значение = ',value,' счетчик = ', count);
- writeln(value);
- Print_Btree(left,l+1);
- end;
- end;
- procedure createNewTree();
- var root: ^binaryTree;
- inputCounter: integer = 1;
- input, level: integer;
- begin
- writeln('Бинарные деревья'); writeln;
- writeln('Поочерёдно вводите элементы бинарного дерева (0 - конец): '); writeln;
- repeat begin
- write('Введите следующий элемент дерева ');
- readln(input);
- if input = 0 then break;
- add(input, root);
- inputCounter := inputCounter + 1
- end
- until (inputCounter < 0);
- writeln;
- level:= CountOfLevels(root);
- print('Максимальная глубина дерева', level);
- writeln();
- Print_Btree(root, 2);
- end;
- begin
- createNewTree();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement