Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
31.03.2015
Размер:
33.28 Кб
Скачать

program balans;

uses crt;

type ref = ^node;

node = record

info:integer;

left,right:ref

end;

var root:ref; n:integer;

{Построение идеально.сбалансированного дерева}

function tree (n:integer):ref;

var p:ref;

x, nl, nr: integer;

begin

if n=0 then

tree:=nil

else

begin nl:= n div 2; nr:= n-nl-1;

read(x); new(P);

with p^ do

begin info:=x;

left:=tree(nl) ;

right:=tree(nr)

end;

tree:= p;

end {else}

end {tree};

{Vivod dereva na ekran, obxod ARB}

procedure Print_Tree(t:ref;h:integer);

var i:integer;

begin

if t<>nil then

with t^ do

begin

print_tree(left,h+1);

for i:=1 to h do

write(' ');

writeln(info);

writeln;

print_tree(right,h+1)

end

end;

begin

writeln('input number of nodes');

read (n);

root:=tree(n);

PrintTree(root, 4);

end.

{Содержится ли слово word в дереве поиска?}

function search (var t:ref; word:st1): ref;

var found : Boolean;

begin

found:=false;

while (t<> nil) and not found do

begin

if t^.info = word then found := true

else

if t^.info > word then

t := t^.left

else

t := t^. right

end;

search := t

end;

{Добавление слова name к дереву поиска }

procedure add_tree (var t:ref;word:st1);

begin

if t=nil then

begin

new(t);

with t^ do

begin info:=word; left:=nil; right:=nil end

end

else

if t^.info > word then

add_tree (t^.left, word)

else

add_tree (t^.right, word)

end;

{Построение дерева root из файла f c комнонен. s }

procedure prebuild (s: str6; var f: text; var root: ref);

var p:ref;

begin read (f, s);

if s = ‘*’ then root := nil

else begin new (p);

with p^ do

begin name := s;

prebuild (left);

prebuild (right)

end {with};

root := p;

end {else}

end {prebuid};

Соседние файлы в папке METOD2