Arvores

Sejam bem-vindos a mais uma aula do curso Estruturas de Dados Essenciais. Hoje vamos falar sobre árvores.

Árvores são estruturas de dados que representam uma hierarquia de elementos. Cada elemento é um nó que contém um valor e uma referência para outros nós. A referência para outros nós é chamada de filho. O nó que contém a referência para outro nó é chamado de pai.

Aqui está um exemplo de uma árvore com três elementos:

  1
 / \
2   3

Tipos de Árvores

Existem vários tipos de árvores. As mais comuns são:

  • Árvore Binária: Cada nó contém no máximo dois filhos.
  • Árvore Binária de Busca: Árvore binária onde o valor do filho da esquerda é menor que o valor do pai e o valor do filho da direita é maior que o valor do pai.

Conceitos

  • Raiz: O nó no topo da árvore.
  • Folha: O nó no final da árvore.
  • Nó Interno: O nó que não é folha.
  • Altura: O comprimento do caminho mais longo da raiz até uma folha.
  • Profundidade: O comprimento do caminho da raiz até um nó.
  • Nível: A profundidade de um nó mais um.
  • Grau: O número de filhos de um nó.
  • Grau de uma Árvore: O grau do nó com o maior grau.
  • Árvore Binária Cheia: Árvore binária onde todos os nós têm grau 0 ou 2.
  • Árvore Binária Completa: Árvore binária onde todos os níveis estão completos, exceto possivelmente o último, que está preenchido da esquerda para a direita.

ADT Árvore Binária

  • build(X): Cria uma nova árvore binária.
  • insert(value): Insere um novo valor na árvvore binária.
  • delete(value): Remove um valor da árvore binária.
  • search(value): Busca um valor na árvore binária.
  • size(): Retorna o número de elementos na árvore binária.
  • height(): Retorna a altura da árvore binária.

Implementação

Vamos implementar uma árvore binária simples em Ruby.