procedure wstaw_drzewo (klucz: integer; var nood:wskd; var przodek:wskd; var h: boolean); var p1, p2: wskd; begin if nood=nil then // wstawianie pod adres pusty begin new(nood); h:=true; nood^.root:=przodek; nood^.klucz:=klucz; nood^.lsyn:=nil; nood^.psyn:=nil; nood^.wywazenie:=0; end else if klucznood^.klucz then begin wstaw_drzewo(klucz,nood^.psyn, nood, h); if h then case nood^.wywazenie of -1:begin nood^.wywazenie:=0; h:=false; end; 0: nood^.wywazenie:=1; 1: begin t[j].w:=1; p1:=nood^.psyn; if p1^.wywazenie=1 then begin nood^.psyn:=p1^.lsyn; p1^.lsyn:=nood; nood^.wywazenie:=0; nood:=p1; end else begin p2:=p1^.lsyn; p1^.lsyn:=p2^.psyn; p2^.psyn:=p1; nood^.psyn:=p2^.lsyn; p2^.lsyn:=nood; if p2^.wywazenie=1 then nood^.wywazenie:=-1 else nood^.wywazenie:=0; if p2^.wywazenie=-1 then p1^.wywazenie:=1 else p1^.wywazenie:=0; nood:=p2; end; nood^.wywazenie:=0; h:=false; end; end end else h:=false; end; end;