Witam wszystkich.

Posiadam klase:
PTTree=^TTree;
TTree=record
dana:integer;
lewy,prawy:PTTree;
end;

T= class    
private
  Tree:PTTree
public      
  constructor Init;      
  destructor freeall
  procedure Wstaw(i:integer);
  procedure drukuj;
  drukuj;
end;

na 4p znalazłem własnie procedure wstaw i drukuj jednak sa one zrobione rekurencyjnie:
procedure Wstaw(var W : PTTree; nr : integer);
begin
if W = nil then
begin
new(W);
if W = nil then
exit;
W^.lewy:=nil;
W^.prawy:=nil;
W^.dana:=nr;
end
else
if W^.dana > nr then
Wstaw(W^.lewy,nr)
else
if W^.dana < nr then
Wstaw(W^.prawy,nr);
end;

procedure drukuj(W : PTTree);
begin
if W <> nil then
begin
drukuj(W^.Lewy);
Writeln(W^.dana);
drukuj(W^.Prawy);
end;
end;

Czy ktoś może wie jak można by je przerobić tak aby procedury działały(rekurencyjnie) na moim drzewie Tree:PTTree. Np gdy bedę chciał wywolać procedure drukowania wew. mojego programu musze podac T.drukuj(drzewo) a jak sie do niego odwolac skoro jest to w private. Jedyne co mi przychodzi do głowy to modyfikacja procedury tylko jak?? Mozna wyrzucic drzewo z klasy ale wolalbym tego nie robic. Prosze o pomoc!!

Pozdrawiam