terça-feira, 26 de abril de 2011

Estrutura de dados II

Matéria que está sendo dada no 4º termo, no algoritmo estamos incluindo um nó em uma árvore binária:

Procedure INCNO(var RAIZ:PREG, ITEM:Integer);

var NO, AUX: PREG; FLAG: boolean;

Begin
  new(NO);
  NO^.INFO:=ITEM;
  NO^.ESQ:=nil;
  NO^.DIR:=nil;

  if RAIZ = nil then
      RAIZ:=NO
  else
    begin
      FLAG:=false;
      AUX:=RAIZ;
     
      while (FLAG = false) do
        begin
          if (ITEM = AUX^.INFO) then
            begin
          if (AUX^.ESQ = nil) then
                begin
                  AUX^.ESQ:=NO;
                  FLAG:=true;
                end
              else
                AUX:=AUX^.ESQ;
            end
          else
            begin
              if (AUX^.DIR = nil) then
                begin
                  AUX^.DIR:=NO;
                  FLAG:=true;
                end
              else
                AUX:=AUX^.DIR;
            end;         
        end;
    end;
end;  

Qual critério foi adotado para inserir valores na árvore?
R: Se o nó filho for menor que o nó pai, e o lado esquerdo estiver vazio,
o valor é inserido do lado esquerdo, caso o lado esquerdo estiver ocupado,
é verificado com o valor que está lá, se o nó é menor ou maior, caso seja maior,
e o lado direito estiver vazio, o valor é inserido do lado direito,
caso não esteja vazio, é verificado com o valor que está lá, se o nó é maior ou menor...

Esquerda: Valor inferior ao do nó Pai;
Direita: Valor superior ao do nó Pai;

Nenhum comentário:

Postar um comentário