Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Árvores Binárias, Notas de estudo de Engenharia Elétrica

Programação

Tipologia: Notas de estudo

2012

Compartilhado em 25/09/2012

matheus-menegazzo-12
matheus-menegazzo-12 🇧🇷

1 documento

1 / 3

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
FACULDADE PITÁGORAS DE LONDRINA
MATHEUS S. MENEGAZZO
TRABALHO DE PROGRAMAÇÃO
LONDRINA
2012
Em Ciência da Computação, uma árvore binária de busca (ou árvore binária de
pesquisa) é uma estrutura de dados de árvore binária baseada em nós, onde todos os nós da
subárvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da
subárvore direita possuem um valor superior ao nó raiz. O objetivo desta árvore é estruturar os
dados de forma flexível, permitindo pesquisa binária.
Nós - são todos os itens guardados na árvore;
Raiz - é o nó do topo da árvore (no caso da figura acima, a raiz é o nó 8);
Filhos - são os nós que vem depois dos outros nós (no caso da figura acima, o nó 6 é
filho do 3);
Pais - são os nós que vem antes dos outros nós (no caso da figura acima, o nó 10 é
pai do 14);
Folhas - são os nós que não têm filhos; são os últimos nós da árvore (no caso da
figura acima, as folhas são 1, 4, 7 e 13).
pf3

Pré-visualização parcial do texto

Baixe Árvores Binárias e outras Notas de estudo em PDF para Engenharia Elétrica, somente na Docsity!

FACULDADE PITÁGORAS DE LONDRINA

MATHEUS S. MENEGAZZO

TRABALHO DE PROGRAMAÇÃO

LONDRINA

Em Ciência da Computação, uma árvore binária de busca (ou árvore binária de pesquisa ) é uma estrutura de dados de árvore binária baseada em nós, onde todos os nós da

subárvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da subárvore direita possuem um valor superior ao nó raiz. O objetivo desta árvore é estruturar os

dados de forma flexível, permitindo pesquisa binária.

  • Nós - são todos os itens guardados na árvore;
  • Raiz - é o nó do topo da árvore (no caso da figura acima, a raiz é o nó 8);
  • Filhos - são os nós que vem depois dos outros nós (no caso da figura acima, o nó 6 é filho do 3);
  • Pais - são os nós que vem antes dos outros nós (no caso da figura acima, o nó 10 é pai do 14);
  • Folhas - são os nós que não têm filhos; são os últimos nós da árvore (no caso da figura acima, as folhas são 1, 4, 7 e 13).

A operação de busca em uma árvore binária por um determinado valor, pode ser feita de maneira recursiva ou interativa. (fiz a abordagem recursiva).

A busca inicia-se no nó raiz, se o valor contido na raiz não for o desejado, verificamos se o valor é maior ou menor que o nó raiz. Caso o valor seja menor que o nó raiz, a busca continua pelo seu filho menor, ou seja, pelo filho da esquerda, mas, caso o valor seja maior a busca continua pelo filho da direita, até que se encontre o valor desejado ou a busca chegue em um nó folha (valor não encontrado).

A inserção de um novo valor é praticamente uma busca na árvore pois, precisamos percorrer toda a árvore até chegarmos em um nó folha correspondente. Se o valor a ser inserido for maior que o raiz, seguimos pelo filho da direita, se for menor seguimos pelo filho da esquerda, até chegarmos em um nó que mantenha a ordenação da árvore.

A operação remoção começa a complicar um pouco. Temos 3 casos diferentes:

  • (^) Exclusão de um nó folha;
  • Exclusão de um nó com 1 filho;
  • Exclusão de um nó com 2 filhos;

Para a exclusão de um nó folha, precisamos somente removê-lo da árvore.

Para a exclusão de um nó com 1 filho, o filho apenas sobe para a posição do pai.

Para a remoção de um nó com 2 filhos, temos duas maneiras diferentes de trabalhar:

  • Usando o maior nó da sub-árvore à esquerda;
  • Usando o menor nó da sub-árvore à direita;

Estas duas maneiras são apenas definições de projeto, possuem a mesma complexidade e tempo de busca.

No exemplo abaixo, para remover o 3 usando a definição do menor nó da sub-árvore à direita, pesquisamos pelo menor nó à partir do 6 que no caso será o 4.

Agora, usando a definição do maior nó da subárvore à esquerda, removeremos o 8, o resultado será o seguinte:

Apresentando alguns códigos, lembrando que ao final desta postagem você poderá fazer o download de um projeto que foi desenvolvido utilizando o Dev-C++, com a linguagem C.

Função Inserir em árvore binária:

Função remover da árvore binária:

Função minimo, retorna o nó com valor minímo: