Type PNo = ^no; no = record info: Telem; esq, dir: PNo; End; Type tree: PNo;
Procedure Define(var t: tree); Begin t:=nil; End;2. Criar um nó raiz
Procedure Cria_Raiz(var t: tree; item: Telem); Var no: tree; Begin new(nó); no^.esq:=nil; no^.dir:=nil; no^.info:=item; t:=no; End;3. Verificar se árvore vazia ou não
Function Vazia (t:tree):boolean; Begin vazia:=(t=nil); End;4. Criar um filho à direita de um dado nó
Procedure Adicionar_Dir(t: tree; item_pai, item: Telem) Var pai, no: tree; Begin pai:=Localiza(t,item_pai); If(pai<>nil) Then If (pai^.dir<>nil) Then erro("item já possui subárvore direita") Else Begin New(nó); no^.esq:=nil; no^.dir:=nil; no^.info:=item; pai^.dir:=nó; End; End;5. Criar um filho ŕ esquerda de um dado nó
Procedure Adicionar_Dir(t: tree; item_pai, item: Telem) Var pai, no: tree; Begin pai:=Localiza(t,item_pai); If(pai<>nil) Then If (pai^.esq<>nil) Then erro("item já possui subárvore direita") Else Begin New(nó); no^.esq:=nil; no^.dir:=nil; no^.info:=item; pai^.esq:=nó; End; End;6. Verificar qual o nível de um dado nó
Function Nível (t: tree; item: Telem): integer; Var n: integer; achou:boolean; Procedure Travessia (ptr: tree; VAR niv: integer; item:Telem; VAR achou:boolean); Begin If ptr<>nil Then Begin niv:=niv+1; If Igual(ptr^.info, item) Then achou:=TRUE; Else Begin Travessia(ptr^.esq, niv, item, achou); If (NOT achou) then Travessia(ptr^.dir, niv, item, achou); If (NOT achou) Then niv:=niv-1; End; End; End; Begin {n¡vel} achou:= false; n:= 0; Travessia(t,n,item, achou); nivel:=n; End;7. Retornar o pai de um dado nó
Function Pai(t: tree; item:Telem):Telem; Var achou: boolean; it : Telem; Procedure Travessia(t: tree; item: Telem; var it: Telem; var achou:Boolean); Begin If not Vazia(t) Then Begin If t^.esq<>nil Then If Igual(item, t^.esq^.info) Then Begin achou:=true; it:=t^.info; End; If not achou Then If t^.dir<>nil Then If Igual(item, t^.dir^.info) Then Begin achou:=true; it:=t^.info; End; If not achou Then Travessia(t^.esq, item, it, achou); If not achou Then Travessia(t^.dir, item, it, achou); End; End; {Travessia} Begin {pai} If not Vazia(t) Then Begin achou:=false; If Igual(item, t^.info) Then pai:=t^.info; {pai do raiz é ele próprio} Else Begin Travessia(t,item,it,achou); pai:=it; End; End; End;