Árvores binárias de pesquisa

Ordem global das subárvores, procura, inserção e remoção com sucessor.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Invariante global

Cada nó exige que toda a subárvore esquerda tenha chaves menores e toda a direita tenha chaves maiores. Esta página usa chaves únicas: a igualdade não cria um nó novo.

  • Comparações locais não chegam. Numa árvore com raiz 8, filho esquerdo 4 e filho direito de 4 com chave 9, cada ligação pai-filho parece ordenada, mas o 9 está na subárvore esquerda de 8 e viola o invariante.

  • Valida com limites abertos herdados. Não uses x-1 nem x+1.

  • Pesquisa desce um só lado em O(h+1)O(h+1). Vazio prova ausência.

  • Inserir para em filho vazio. Igualdade não muda o conjunto.

Cadeia dá altura n-1. Inserir as chaves pela ordem das medianas recursivas minimiza a altura: ordena primeiro e insere a mediana, depois as medianas das metades.

Retirar sem partir a ordem

Nó temFaz
Zero filhosLiga vazio e liberta
Um filhoLiga o filho e liberta
Dois filhosCopia o sucessor e apaga o sucessor

Sucessor é o mínimo da direita e não tem esquerdo, mas pode ter direito: religa-o. Atualiza a raiz quando for preciso.

Em-ordem final [1,6,7,8].

Intervalos e biblioteca

  • Sucessor sem direita é o primeiro antepassado vindo da esquerda. Pode não existir.
  • Enumerar k chaves com poda custa O(log⁡n+k)O(\log n+k).
  • set e map pesquisam em logaritmo. find não insere; map[k] cria se faltar.
  • lower_bound(x) é o primeiro >=x; upper_bound(x) o primeiro >x. Podem ser end().

Contratos completos.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.