Задание. 1. Набрать программы Пример №1,№2
1. Набрать программы Пример №1,№2 2. Разобрать работу процедур. Пример №1 Program B_Tree; type PTree = ^ TTree; {Tip- ukazatel na element dereva} TTree = record el: integer; {tip el-ta dereva} left, right: PTree; {ukazateli na lev i prav.sina} End; var Tree {ukaz. na koren dereva}: PTree; i,j,el,n: integer; {n - kol-vo el-tov dereva} {-------------------------------------------------------------------} {dobavlenie v derevo } procedure AddInTree(el: integer; var tree:PTree); var p, pr, t: PTree; begin new(t); t^.el:= el; {sozdaem novii el-t dereva} t^.left:= nil; t^.right:= nil; {nov.el-t bydet listom dereva} p:= tree; pr:=nil; {ishem mesto privjazki } while p<>nil do begin pr:= p; {"predidushii" ukazatel} if p^.el > el then p:=P^.left else p:=p^.right; End; if tree = nil then tree:= t {pervii uzel dereva} else if pr^.el>el then pr^.left:= t else pr^.right:= t; End; {--------------------------------------------------------------------} { Prjamoi obxod (pechat) dereva - uzel, levoe podderevo, pravoe podderevo} procedure PrintTree(tree: PTree); begin write(tree^.el, ' '); if tree^.left<>nil then PrintTree(tree^.left); if tree^.right<>nil then PrintTree(tree^.right); End; {------------------------------------------------------------------------} {Udalenie dereva} procedure ClearTree(var p:Ptree); begin if p^.left <> nil then ClearTree(p^.left); if p^.right <>nil then ClearTree(p^.right); dispose(p); p:=nil; End; Begin write('Vvedite kol-vo el-tov dereva: '); readln(n); tree:= nil; for i:=1 to n do Begin write(i,' element dereva = '); Readln(el); AddInTree(el, tree); End; if tree = nil then writeln('Derevo pusto!') Else begin writeln('Obxod dereva:');
|