Pular para conteúdo

Árvores e Árvores de Busca

Uma árvore é um grafo conexo e acíclico. Em uma árvore enraizada, todo nó exceto a raiz possui um pai. A profundidade conta as arestas a partir da raiz; sob a convenção usada aqui, a altura é a maior profundidade restante até uma folha.

Invariante da árvore binária de busca

Para cada nó com chave k:

  • as chaves de sua subárvore esquerda são menores que k;
  • as chaves de sua subárvore direita são maiores que k;
  • uma política separada trata as chaves duplicadas.

Busca, inserção e remoção levam tempo O(h) para uma altura h. Uma árvore balanceada tem h = Θ(log n); uma BST comum pode degenerar para h = Θ(n).

graph TD
    A[8] --> B[3]
    A --> C[10]
    B --> D[1]
    B --> E[6]
    E --> F[4]
    E --> G[7]
    C --> H[14]
    H --> I[13]

Um percurso em ordem visita as chaves em ordem crescente. O percurso em pré-ordem é útil para serialização e cópia estrutural; o percurso em pós-ordem processa os filhos antes do pai.

Variantes balanceadas

Árvores AVL e rubro-negras mantêm invariantes de balanceamento diferentes por meio de rotações. Ambas garantem altura logarítmica. Árvores B e estruturas relacionadas usam fatores de ramificação elevados para reduzir acessos a páginas de armazenamento.

Exercícios

  1. Liste os percursos em ordem, pré-ordem e pós-ordem da árvore acima.
  2. Mostre uma sequência de inserção de chaves que crie uma BST com altura linear.
  3. Explique por que uma rotação local preserva a ordem das chaves.