program ArvoreBEstrela;

const MM = 1;
      MM2 = 2;

type
  TipoChave     = integer;
  TipoRegistro  = record
                    Chave: TipoChave;
                    { outros componentes }
                  end;
  TipoApontador = ^TipoPagina;
  TipoIntExt    = (Interna, Externa);
  TipoPagina    = record 
                    case Pt: TipoIntExt of
                      Interna: (ni: 0..MM;
                                ri: array [1..MM] of TipoChave;
                                pi: array [0..MM] of TipoApontador);
                      Externa: (ne: 0..MM2;
                                re: array [1..MM2] of TipoRegistro);
                  end;
  TipoDicionario = TipoApontador;

procedure Pesquisa (var x: TipoRegistro; var Ap: TipoApontador);
var i: integer;
begin
  if Ap^.Pt = Interna
  then with Ap^ do
       begin
       i := 1;
       while (i < ni) and (x.Chave > ri[i]) do i := i + 1;
       if x.Chave < ri[i]
       then Pesquisa(x, pi[i-1])
       else Pesquisa(x, pi[i])
       end
  else with Ap^ do
       begin
       i := 1;
       while (i < ne) and (x.Chave > re[i].Chave) do i := i + 1;
       if x.Chave = re[i].Chave
       then x := re[i]
       else writeln('Registro nao esta presente na arvore');
    end;
end;

begin
end. { ArvoreBEstrela }

