SlideShare una empresa de Scribd logo
1 de 39
Arvore Binária
Árvores


São estruturas de dados
representação de hierarquias.

adequadas

para

a



Uma árvore é composta por um conjunto de nós.



Existe um nó r, denominado raiz, que contém zero ou
mais subárvore, cujas raízes são ligadas diretamente a
r.



A raiz se liga a um ou mais elementos, e cada um
destes forma uma nova subárvore. Esses elementos
são seus galhos ou filhos.
Árvores
Fundamentos básicos
GRAU – número de subárvore de um nó.
FOLHA – um nó que possui grau zero, ou seja, não
possui subárvore.
FILHOS – são as raízes das subárvore de um nó.
Nó não terminal é um nó que não é uma folha e é
diferente da raiz.
Árvores
Fundamentos básicos
A altura de uma árvore é o comprimento do caminho
mais longo da raiz até uma das folhas.
Uma árvore nula tem altura 0.
Todos os nós são acessíveis a partir da raiz.
Existe um único caminho entre a raiz e qualquer
outro nó.
Árvores
Formas de representação gráfica
Árvore Binária
Árvore Binária: Uma árvore binária é uma árvore
que pode ser nula, ou então tem as seguintes
características:
Existe um nó especial denominado raiz;
Nenhum nó tem grau superior a 2 (dois), isto é,
nenhum nó tem mais de dois filhos;
Existe um “senso de posição”, ou seja, distinguese entre uma subárvore esquerda e uma
subárvore direita.
Árvore Binária
Atravessamento (ou caminhamento) de árvore é a
passagem de forma sistemática por cada um de seus
nós;
Diferentes formas de percorrer os nós de uma árvore:
Pré-ordem ou prefixa (busca em profundidade)
Em ordem ou infixa (ordem central)
Pós-ordem ou posfixa
Em nível
Árvore Binária
Pré-ordem (prefixa)
•Visitar a raiz;
•Caminhar na subárvore à esquerda, segundo este
caminhamento;
•Caminhar na subárvore à direita, segundo este
caminhamento.
Árvore Binária
Atravessamento em ordem (infixa)
•Caminhar na subárvore à esquerda, segundo este
caminhamento;
•Visitar a raiz;
•Caminhar na subárvore à direita, segundo este
caminhamento.
Árvore Binária
Atravessamento pós-ordem (posfixa)
•Caminhar na subárvore à esquerda, segundo este
caminhamento;
•Caminhar na subárvore à direita, segundo este
caminhamento.
•Visitar a raiz;
Árvore Binária
Atravessamento em nível
•Percorre-se a árvore de cima para baixo e da
esquerda para a direira.
Árvore Binária
Árvore Estritamente Binária:
•É uma árvore binária na qual todo nó tem 0 ou 2
subárvore, ou seja, nenhum nó tem “filho único”.
Árvore Binária
Árvore Binária Cheia
•Todos os nós, exceto os do último nível, possuem
exatamente duas subárvore.
•Uma árvore binária cheia de altura h tem 2h – 1 nós.
Árvore Binária
Árvore Degenerada
•Cada nó possui exatamente um filho, e a árvore tem o
mesmo número de níveis que de nós.
Árvore Binária de Busca


Uma árvore é denominada árvore binária de busca
se:
Todo elemento da subárvore esquerda é menor que
o elemento raiz;
Nenhum elemento da subárvore direita é menor que
o elemento raiz;
As subárvore direita e esquerda também são árvores
de busca binária;
Árvore Binária de Busca


Busca
Se o valor for igual à raiz, o valor existe na árvore.
Se o valor for menor do que a raiz, então deve
buscar-se na subárvore da esquerda, e assim
recursivamente, em todos os nós da subárvore.
Se o valor for maior que a raiz, deve-se buscar na
subárvore da direita, até alcançar-se o nó folha da
árvore, encontrando ou não o valor requerido.
Árvore Binária de Busca


Inserção
Se a árvore estiver vazia, cria um novo nó e insere as
informações do novo nó.
Compara a chave a ser inserida com a chave do nó
analisado:
Se menor, insere a chave na subárvore esquerda;
Se maior, insere a chave na subárvore direita.
Árvore Binária de Busca
Inserção
Exemplo:
•Inserir os seguintes elementos: 7, 13, 20, 4, 1, 18, 5,
11.
Árvore Binária de Busca


Remoção
A remoção de um nó é um processo mais complexo.
Para excluir um nó de uma árvore binária de busca, há
de se considerar três casos distintos:
o Remoção na folha;
o Remoção de um nó com um filho;
o Remoção de um nó com dois filhos.
Árvore Binária de Busca
Remoção na folha
•A exclusão na folha é a mais simples, basta removê-lo
da árvore.
Árvore Binária de Busca
Remoção de um nó com um filho
•Excluindo-o, o filho sobe para a posição do pai.
Árvore Binária de Busca
Remoção de um nó com dois filhos
•Neste caso, pode-se operar de duas maneiras
diferentes:
•Substitui-se o valor do nó a ser retirado pelo valor
sucessor (o nó mais à esquerda da subárvore
direita);
•Substitui-se o valor do nó a ser retirado pelo valor
antecessor (o nó mais à direita da subárvore
esquerda).
Árvore Binária de Busca
Remoção de um nó com dois filhos
•Exemplo de remoção substituindo o nó pelo seu
antecessor.
Árvore Binária de Busca
Remoção de um nó com dois filhos
•Exemplo de remoção substituindo o nó pelo seu
sucessor.
Tipo Árvore Binária de Busca


Árvore é representada pelo ponteiro para o nó raiz.
struct noArv {
int info;
struct noArv* esq;
struct noArv* dir;
};

typedef struct noArv NoArv;
Criação


Árvore vazia representada por NULL:
NoArv* abb_cria(void){
return NULL;

}
Impressão


Imprime os valores da árvore em ordem crescente,
percorrendo os nós em ordem simétrica:
void abb_imprime (NoArv* a){
if (a != NULL) {
abb_imprime(a -> esq);
printf(“%dn”,a -> info);
abb_imprime(a ->dir);
}
}
Busca



Explora a propriedade de ordenação da árvore;
Possui desempenho computacional proporcional à
altura.
NoArv* abb_busca (NoArv* r, int v){
if (r == NULL)
return NULL;
else if (r -> info > v)
return abb_busca (r -> esq, v);
else if (r -> info < v)
return abb_busca (r -> dir, v);
else return r;
}
Inserção




Recebe um valor v a ser inserido
Retorna o eventual novo nó raiz da (sub-) árvore
Para adicionar v na posição correta, faça:
 Se a (sub-) árvore for vazia
○ Crie uma árvore cuja raiz contém v
 Se a (sub-) árvore não for vazia
○ Compare v com o valor na raiz
○ Insira v na subárvore esquerda ou na subárvore direita,

conforme o resultado da comparação.
Exemplo Inserção
NoArv* abb_insere (NoArv* a, int v){
if (a == NULL) {
a = (NoArv*) malloc(sizeof(NoArv));
é necessário atualizar os ponteiros para
a -> info = v;
as sub-árvores à esquerda ou à direita
quando da chamada recursiva da função,
a -> esq = a -> dir = NULL;
pois a função de inserção pode alterar
o valor do ponteiro para a raiz da (sub-)árvore .
}
else if (v < a -> info)
a -> esq = abb_insere(a -> esq, v);
else /* v >= a -> info */
a -> dir = abb_insere (a -> dir, v);
return a;
}
Inserção
Cria
Insere 6
Insere 8
Insere 4
Insere 5
Insere 2
Insere 3
Insere 1
Insere 9
Insere 7
Remoção




Recebe um valor v a ser inserido
Retorna a eventual nova raiz da árvore
Para remover v, faça:
 Se a árvore for vazia
○ Nada tem que ser feito
 Se a árvore não for vazia
○ Compare o valor armazenado no nó raiz com v
○ Se for maior que v, retire o elemento da sub-árvore à esquerda
○ Se for menor que v, retire o elemento da sub-árvore à direita
○ Se for igual a v, retire a raiz da árvore
Remoção


Para retirar a raiz da árvore, há 3 casos:
 Caso 1: a raiz que é folha
 Caso 2: a raiz a ser retirada possui um único filho
 Caso 3: a raiz a ser retirada tem dois filhos.
Remoção de folha


Caso 1: a raiz da sub-árvore é folha da árvore original
 Libere a memória alocada pela raiz
 Retorne a raiz atualizada, que passa a ser NULL
Remoção de pai de filho único


Caso 2: a raiz a ser retirada possui um único filho
 Libere a memória alocada pela raiz
 A raiz da árvore passa a ser o único filho da raiz
Remoção de pai de dois filhos


Caso 3: a raiz a ser retirada tem dois filho
 Encontre o nó N que precede a raiz na ordenação (o

elemento mais à direita da sub-árvore à esquerda)
 Troque o dado da raiz com o dado de N
 Retire N da sub-árvore à esquerda (que agora contém o
dado da raiz que se deseja retirar)
○ Retirar o nó N mais à direita é trivial, pois N é um nó folha ou N

é um nó com um único filho (no caso, o filho da direita nunca
existe)
NoArv* abb_retira (NoArv* r, int v) {
if (r == NULL)
return NULL;
else if (r -> info > v)
r->esq = abb_retira (r -> esq, v);
else if (r->info < v)
r->dir = abb_retira(r->dir, v);
else { /* achou o nó a remover */
/* nó sem filhos */
if (r->esq == NULL && r->dir == NULL) {
free (r);
r = NULL;
}
/* nó só tem filho à direita */
else if (r->esq == NULL) {
NoArv* t = r;
r = r->dir;
free (t);
}
/* só tem filho à esquerda */
else if (r->dir == NULL) {
NoArv* t = r;
r = r->esq;
free (t);
}
/* nó tem os dois filhos */
else {
NoArv* f = r->esq;
while (f->dir != NULL) {
f = f->dir;
}
r->info = f->info; /* troca as informações */
f->info = v;
r->esq = abb_retira(r->esq,v);
}
}
return r;
}
“As árvores da computação têm a tendência de
crescer para baixo: a raiz fica no ar enquanto as
folhas se enterram no chão."

Más contenido relacionado

La actualidad más candente

17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de buscaRicardo Bolanho
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoLeinylson Fontinele
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDVinicius Buffolo
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Banco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosBanco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosLeinylson Fontinele
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Bancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosBancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosElaine Cecília Gatto
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDjonathas Cardoso
 

La actualidad más candente (20)

17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de busca
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBD
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Banco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosBanco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de Dados
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Modelagem de dados
Modelagem de dados Modelagem de dados
Modelagem de dados
 
Bancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosBancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dados
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Diagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados IDiagrama Entidade Relacionamento - Bancos de Dados I
Diagrama Entidade Relacionamento - Bancos de Dados I
 

Similar a Árvore Binária

Similar a Árvore Binária (6)

Aula 18
Aula 18Aula 18
Aula 18
 
Aula 19
Aula 19Aula 19
Aula 19
 
Arvores b
Arvores bArvores b
Arvores b
 
Operações em Árvores Binárias
Operações em Árvores BináriasOperações em Árvores Binárias
Operações em Árvores Binárias
 
Pged 08
Pged 08Pged 08
Pged 08
 
Inf01203 arvbinarias
Inf01203 arvbinariasInf01203 arvbinarias
Inf01203 arvbinarias
 

Último

PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 

Último (20)

PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 

Árvore Binária

  • 2. Árvores  São estruturas de dados representação de hierarquias. adequadas para a  Uma árvore é composta por um conjunto de nós.  Existe um nó r, denominado raiz, que contém zero ou mais subárvore, cujas raízes são ligadas diretamente a r.  A raiz se liga a um ou mais elementos, e cada um destes forma uma nova subárvore. Esses elementos são seus galhos ou filhos.
  • 3. Árvores Fundamentos básicos GRAU – número de subárvore de um nó. FOLHA – um nó que possui grau zero, ou seja, não possui subárvore. FILHOS – são as raízes das subárvore de um nó. Nó não terminal é um nó que não é uma folha e é diferente da raiz.
  • 4. Árvores Fundamentos básicos A altura de uma árvore é o comprimento do caminho mais longo da raiz até uma das folhas. Uma árvore nula tem altura 0. Todos os nós são acessíveis a partir da raiz. Existe um único caminho entre a raiz e qualquer outro nó.
  • 6. Árvore Binária Árvore Binária: Uma árvore binária é uma árvore que pode ser nula, ou então tem as seguintes características: Existe um nó especial denominado raiz; Nenhum nó tem grau superior a 2 (dois), isto é, nenhum nó tem mais de dois filhos; Existe um “senso de posição”, ou seja, distinguese entre uma subárvore esquerda e uma subárvore direita.
  • 7. Árvore Binária Atravessamento (ou caminhamento) de árvore é a passagem de forma sistemática por cada um de seus nós; Diferentes formas de percorrer os nós de uma árvore: Pré-ordem ou prefixa (busca em profundidade) Em ordem ou infixa (ordem central) Pós-ordem ou posfixa Em nível
  • 8. Árvore Binária Pré-ordem (prefixa) •Visitar a raiz; •Caminhar na subárvore à esquerda, segundo este caminhamento; •Caminhar na subárvore à direita, segundo este caminhamento.
  • 9. Árvore Binária Atravessamento em ordem (infixa) •Caminhar na subárvore à esquerda, segundo este caminhamento; •Visitar a raiz; •Caminhar na subárvore à direita, segundo este caminhamento.
  • 10. Árvore Binária Atravessamento pós-ordem (posfixa) •Caminhar na subárvore à esquerda, segundo este caminhamento; •Caminhar na subárvore à direita, segundo este caminhamento. •Visitar a raiz;
  • 11. Árvore Binária Atravessamento em nível •Percorre-se a árvore de cima para baixo e da esquerda para a direira.
  • 12. Árvore Binária Árvore Estritamente Binária: •É uma árvore binária na qual todo nó tem 0 ou 2 subárvore, ou seja, nenhum nó tem “filho único”.
  • 13. Árvore Binária Árvore Binária Cheia •Todos os nós, exceto os do último nível, possuem exatamente duas subárvore. •Uma árvore binária cheia de altura h tem 2h – 1 nós.
  • 14. Árvore Binária Árvore Degenerada •Cada nó possui exatamente um filho, e a árvore tem o mesmo número de níveis que de nós.
  • 15. Árvore Binária de Busca  Uma árvore é denominada árvore binária de busca se: Todo elemento da subárvore esquerda é menor que o elemento raiz; Nenhum elemento da subárvore direita é menor que o elemento raiz; As subárvore direita e esquerda também são árvores de busca binária;
  • 16. Árvore Binária de Busca  Busca Se o valor for igual à raiz, o valor existe na árvore. Se o valor for menor do que a raiz, então deve buscar-se na subárvore da esquerda, e assim recursivamente, em todos os nós da subárvore. Se o valor for maior que a raiz, deve-se buscar na subárvore da direita, até alcançar-se o nó folha da árvore, encontrando ou não o valor requerido.
  • 17. Árvore Binária de Busca  Inserção Se a árvore estiver vazia, cria um novo nó e insere as informações do novo nó. Compara a chave a ser inserida com a chave do nó analisado: Se menor, insere a chave na subárvore esquerda; Se maior, insere a chave na subárvore direita.
  • 18. Árvore Binária de Busca Inserção Exemplo: •Inserir os seguintes elementos: 7, 13, 20, 4, 1, 18, 5, 11.
  • 19. Árvore Binária de Busca  Remoção A remoção de um nó é um processo mais complexo. Para excluir um nó de uma árvore binária de busca, há de se considerar três casos distintos: o Remoção na folha; o Remoção de um nó com um filho; o Remoção de um nó com dois filhos.
  • 20. Árvore Binária de Busca Remoção na folha •A exclusão na folha é a mais simples, basta removê-lo da árvore.
  • 21. Árvore Binária de Busca Remoção de um nó com um filho •Excluindo-o, o filho sobe para a posição do pai.
  • 22. Árvore Binária de Busca Remoção de um nó com dois filhos •Neste caso, pode-se operar de duas maneiras diferentes: •Substitui-se o valor do nó a ser retirado pelo valor sucessor (o nó mais à esquerda da subárvore direita); •Substitui-se o valor do nó a ser retirado pelo valor antecessor (o nó mais à direita da subárvore esquerda).
  • 23. Árvore Binária de Busca Remoção de um nó com dois filhos •Exemplo de remoção substituindo o nó pelo seu antecessor.
  • 24. Árvore Binária de Busca Remoção de um nó com dois filhos •Exemplo de remoção substituindo o nó pelo seu sucessor.
  • 25. Tipo Árvore Binária de Busca  Árvore é representada pelo ponteiro para o nó raiz. struct noArv { int info; struct noArv* esq; struct noArv* dir; }; typedef struct noArv NoArv;
  • 26. Criação  Árvore vazia representada por NULL: NoArv* abb_cria(void){ return NULL; }
  • 27. Impressão  Imprime os valores da árvore em ordem crescente, percorrendo os nós em ordem simétrica: void abb_imprime (NoArv* a){ if (a != NULL) { abb_imprime(a -> esq); printf(“%dn”,a -> info); abb_imprime(a ->dir); } }
  • 28. Busca   Explora a propriedade de ordenação da árvore; Possui desempenho computacional proporcional à altura. NoArv* abb_busca (NoArv* r, int v){ if (r == NULL) return NULL; else if (r -> info > v) return abb_busca (r -> esq, v); else if (r -> info < v) return abb_busca (r -> dir, v); else return r; }
  • 29. Inserção    Recebe um valor v a ser inserido Retorna o eventual novo nó raiz da (sub-) árvore Para adicionar v na posição correta, faça:  Se a (sub-) árvore for vazia ○ Crie uma árvore cuja raiz contém v  Se a (sub-) árvore não for vazia ○ Compare v com o valor na raiz ○ Insira v na subárvore esquerda ou na subárvore direita, conforme o resultado da comparação.
  • 30. Exemplo Inserção NoArv* abb_insere (NoArv* a, int v){ if (a == NULL) { a = (NoArv*) malloc(sizeof(NoArv)); é necessário atualizar os ponteiros para a -> info = v; as sub-árvores à esquerda ou à direita quando da chamada recursiva da função, a -> esq = a -> dir = NULL; pois a função de inserção pode alterar o valor do ponteiro para a raiz da (sub-)árvore . } else if (v < a -> info) a -> esq = abb_insere(a -> esq, v); else /* v >= a -> info */ a -> dir = abb_insere (a -> dir, v); return a; }
  • 31. Inserção Cria Insere 6 Insere 8 Insere 4 Insere 5 Insere 2 Insere 3 Insere 1 Insere 9 Insere 7
  • 32. Remoção    Recebe um valor v a ser inserido Retorna a eventual nova raiz da árvore Para remover v, faça:  Se a árvore for vazia ○ Nada tem que ser feito  Se a árvore não for vazia ○ Compare o valor armazenado no nó raiz com v ○ Se for maior que v, retire o elemento da sub-árvore à esquerda ○ Se for menor que v, retire o elemento da sub-árvore à direita ○ Se for igual a v, retire a raiz da árvore
  • 33. Remoção  Para retirar a raiz da árvore, há 3 casos:  Caso 1: a raiz que é folha  Caso 2: a raiz a ser retirada possui um único filho  Caso 3: a raiz a ser retirada tem dois filhos.
  • 34. Remoção de folha  Caso 1: a raiz da sub-árvore é folha da árvore original  Libere a memória alocada pela raiz  Retorne a raiz atualizada, que passa a ser NULL
  • 35. Remoção de pai de filho único  Caso 2: a raiz a ser retirada possui um único filho  Libere a memória alocada pela raiz  A raiz da árvore passa a ser o único filho da raiz
  • 36. Remoção de pai de dois filhos  Caso 3: a raiz a ser retirada tem dois filho  Encontre o nó N que precede a raiz na ordenação (o elemento mais à direita da sub-árvore à esquerda)  Troque o dado da raiz com o dado de N  Retire N da sub-árvore à esquerda (que agora contém o dado da raiz que se deseja retirar) ○ Retirar o nó N mais à direita é trivial, pois N é um nó folha ou N é um nó com um único filho (no caso, o filho da direita nunca existe)
  • 37. NoArv* abb_retira (NoArv* r, int v) { if (r == NULL) return NULL; else if (r -> info > v) r->esq = abb_retira (r -> esq, v); else if (r->info < v) r->dir = abb_retira(r->dir, v); else { /* achou o nó a remover */ /* nó sem filhos */ if (r->esq == NULL && r->dir == NULL) { free (r); r = NULL; } /* nó só tem filho à direita */ else if (r->esq == NULL) { NoArv* t = r; r = r->dir; free (t); }
  • 38. /* só tem filho à esquerda */ else if (r->dir == NULL) { NoArv* t = r; r = r->esq; free (t); } /* nó tem os dois filhos */ else { NoArv* f = r->esq; while (f->dir != NULL) { f = f->dir; } r->info = f->info; /* troca as informações */ f->info = v; r->esq = abb_retira(r->esq,v); } } return r; }
  • 39. “As árvores da computação têm a tendência de crescer para baixo: a raiz fica no ar enquanto as folhas se enterram no chão."