Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
filhotecmail opened this issue Jul 29, 2023 · 0 comments
Open

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

filhotecmail opened this issue Jul 29, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@filhotecmail
Copy link
Owner

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.

@filhotecmail filhotecmail self-assigned this Jul 29, 2023
@filhotecmail filhotecmail added the enhancement New feature or request label Jul 29, 2023
@filhotecmail filhotecmail pinned this issue Jul 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant