💻
Micro-fundamentos - AEDs
  • Introdução
  • Algoritmos e Estruturas de Dados 1
    • Parte 1 - Começando com o básico
      • Criando nosso primeiro algoritmo
      • Estruturas de dados primitivas
      • Atribuição e declaração de variáveis
      • Leitura e escrita de dados
      • Estruturas condicionais e Operadores relacionais
      • Operadores aritméticos
      • Operadores lógicos
      • Estruturas de repetição
      • Funções e escopo
    • Parte 2 - Conceitos avançados
      • Introdução a ponteiros
      • Estruturas de dados não primitivas
      • Entendendo-recursão
      • Retornando argumentos de funções recursivas
      • Como a máquina interpreta seus códigos
    • Parte 3 - Conhecendo POO e seus Princípios
      • O que é Programação Orientada a Objetos?
      • Criando nossa primeira classe
      • Entendendo Encapsulação
      • Entendendo Herança
      • Entendendo Polimorfismo
  • Algoritmos e Estruturas de Dados 2
    • Parte 1 - Complexidade e Programação Competitiva
      • Complexidade e notação Big O
      • Complexidade em funções recursivas
      • Crescimento de funções - Notação Theta e Omega
      • Programação competitiva
    • Parte 3 - Algoritmos de pesquisa
      • Busca linear
    • Parte 4 - Ordenação Interna
      • Quicksort
    • Parte 5 - Tipos Abstratos de Dados (TAD)
    • Parte 6 - Estruturas Flexíveis e Estáticas
    • Parte 7 - Árvores e Tabela Hash
      • Árvore Binária
  • Algoritmos e Estruturas de Dados 3
    • CRUD
    • Intercalação balanceada
  • C
    • Argumentos-de-entrada
    • debug
      • Introducao-ao-gdb
      • Introducao-ao-valgrind
    • ponteiro
      • Ponteiros e Alocação de Memória em C
    • string
      • Strings em C
      • Leitura-de-Strings-em-C
  • Java
    • Nocoes-basicas
    • Argumentos-de-entrada
    • Debug em Java
      • java-debugger-tool
      • visual-studio-debugger
    • string
      • String-em-Java
    • Tratamento de Exceções em Java
      • try-catch-e-o-throws
  • COMO-CONTRIBUIR
Powered by GitBook
On this page
  1. Algoritmos e Estruturas de Dados 2
  2. Parte 7 - Árvores e Tabela Hash

Árvore Binária

PreviousParte 7 - Árvores e Tabela HashNextAlgoritmos e Estruturas de Dados 3

Last updated 2 years ago

Com certeza, uma das mais importantes estruturas de dados na Ciência da Computação são as árvores. Neste caso temos a árvore binária, que é uma estrutura de dados que consiste em nós organizados em uma estrutura semelhante a uma árvore. Cada nó em uma árvore binária tem no máximo dois filhos, que são chamados de filho esquerdo e filho direito.

Abaixo temos o exemplo de uma árvore binária, perceba que o conteúdo dos nós da esquerda são menores do que o conteúdo dos nós da direita.

Existem muitas maneiras diferentes de usar árvores binárias, mas um uso comum é armazenar e organizar dados de forma a permitir inserção, exclusão e pesquisa rápidas, pois a maneira na qual os nós são armazenados (com o menor a esquerda e o maior a direita) permite que a complexidade das operações seja O(log(n)).

Para adicionar um novo elemento a uma árvore binária, você normalmente começaria na raiz e compararia o valor do novo elemento com o valor na raiz. Se o novo valor for menor que o valor na raiz, você deve seguir o filho esquerdo até o próximo nó na árvore; se o novo valor for maior, você seguirá o filho certo. Você continuaria esse processo até chegar a um nó folha (um nó sem filhos), no ponto em que inseriria o novo valor como filho do nó folha.

Para procurar um valor em uma árvore binária, você seguiria um processo semelhante, começando na raiz e comparando o valor que está procurando com o valor em cada nó. Se o valor que você está procurando for menor que o valor no nó atual, você deve seguir o filho esquerdo; se for maior, você seguirá a criança certa. Você continuaria esse processo até encontrar o valor que está procurando ou chegar a um nó folha, momento em que saberia que o valor não está na árvore.

Caso ainda tenha dúvidas na visualização e funcionamento da Árvore Binária, sugiro que dê uma olhada no código que pode ser encontrado nesta seção, ele tem uma função especial que é imprimir uma árvore de forma visual dentro do terminal. Para mais apoio sugiro também dar uma olhada no simulador online de árvore binária, pelo fato de ser uma simulação visual, este vai te auxiliar ainda mais a ver como que a árvore binária processa suas operações.