Skip to content

implementação do algoritmo de inserção. #2

Description

@filhotecmail

Passei um bom tempo analisando os livros que implementam Oo algoritmo de inserção os livros que eu tenho tem implementações com base na linguagem Java bom o que não foi tão difícil de traduzir e de implementar isso para object Pascal.

Porém tentarei aqui Explicar melhor .

Começarei explicando a parte do While .

if id < current^.Key then
begin
  current := current^.Left;
  // Se não há filho à esquerda
  if current = nil then
  begin
    // Modifica os atributos do nó relacionado
    parent^.Left := newNode;
    newNode^.Parent := parent;
    Break;
  end;
end;

Quando a chave do novo nó é menor que a chave do nó atual, o código avança para o filho à esquerda do nó atual para continuar a busca pelo local de inserção ee processo continua até que seja encontrado um nó current que não possua um filho à esquerda (current = nil), o que indica que esse é o local correto de inserção do novo nó. Nesse ponto, o novo nó é definido como o filho à esquerda do nó pai (parent) e a estrutura da árvore é ajustada para refletir a inserção do novo nó.

Quando queremos adicionar um novo elemento à fila, procuramos o lugar certo para ela na árvore. Começamos no tronco (raiz) da árvore e comparamos a chave do novo elemento com a chave d0 elemento atual.

Se a chave do novo elemento for menor, vamos para o galho esquerdo, caso contrário, vamos para o galho direito.

Continuamos descendo pela árvore até encontrar um lugar onde não há mais elementos (nenhum galho). Nesse ponto, encontramos o lugar correto para colocar do novo elemento na fila. Se do novo elemento for menor que o elemento atual, ela ficará à esquerda dela; caso contrário, ficará à direita.

Essa busca continua até que encontremos um lugar vazio, e é quando inserimos o novo elemento nesse ponto. Agora o novo elemento faz parte da fila e está organizada de acordo com sua altura em relação aos outros elementos.

Se quisermos adicionar mais elementos à fila, basta seguir o mesmo processo: procure o lugar certo na árvore e insira no local vazio.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions