Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Вводим новый тип данных}
- type ref = ^node;
- node = record
- key, count: integer;
- left, right: ref;
- end;
- {Печать содержимого бинарного дерева}
- procedure Print_Btree (w: ref; l: integer);
- var i : integer;
- begin
- if (w <> Nil) then
- with w^ do
- begin
- Print_Btree(right,l+1);
- for i:= 1 to l*4 do
- write(' ');
- // writeln('значение = ',key,' счетчик = ', count);
- writeln(key);
- Print_Btree(left,l+1);
- end;
- end;
- {Построение дерева повторений}
- procedure Include (x: integer; var p:ref);
- begin
- if p = Nil then
- begin {Добавляем вершину}
- new (p);
- with p^ do
- begin
- key := x;
- count := 1;
- left := Nil;
- right := Nil;
- end;
- end
- else
- begin
- if x = p^.key then
- {Если число есть в дереве, то увеличиваем сч?тчик}
- p^.count := p^.count + 1
- else
- if x > p^.key then
- {Добавляем в правое поддерево}
- Include(x, p^.right)
- else
- {Добавляем в левое поддерево}
- Include(x, p^.left);
- end;
- end;
- function equal(root1, root2: ref): integer;
- begin
- if (root1 = Nil) and (root2 = Nil) then equal := 1 else
- if ((root1 = Nil) and (root2 <> Nil))or((root1 <> Nil)and(root2 = Nil)) or (root1^.key <> root2^.key) then equal:=0 else
- equal := equal(root1^.left, root2^.left)*equal(root1^.right,root2^.right);
- end;
- var
- root1, root2: ref;
- k: integer;
- begin
- root1 := Nil;
- //writeln('дерево повторений');
- writeln('введите числа первого дерева (0 - конец ввода)');
- read(k);
- while k <> 0 Do
- begin
- Include (k,root1);
- read(k);
- end;
- writeln('введите числа второго дерева (0 - конец ввода)');
- read(k);
- while k <> 0 Do
- begin
- Include (k,root2);
- read(k);
- end;
- if equal(root1, root2) = 1 then
- writeln('деревья равны')
- else
- writeln('деревья не равны');
- //writeln('печать дерева');
- //Print_Btree (root,2);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement