SlideShare ist ein Scribd-Unternehmen logo
1 von 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."

Weitere ähnliche Inhalte

Was ist angesagt?

Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Leinylson Fontinele
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
Aula 4 linguagens regularese automatosfinitosdeterministicos
Aula 4   linguagens regularese automatosfinitosdeterministicosAula 4   linguagens regularese automatosfinitosdeterministicos
Aula 4 linguagens regularese automatosfinitosdeterministicoswab030
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosNatanael Simões
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane FidelixCris Fidelix
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 

Was ist angesagt? (20)

Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
Aula 6 banco de dados
Aula 6   banco de dadosAula 6   banco de dados
Aula 6 banco de dados
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Introdução ao MySQL
Introdução ao MySQLIntrodução ao MySQL
Introdução ao MySQL
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Aula 4 linguagens regularese automatosfinitosdeterministicos
Aula 4   linguagens regularese automatosfinitosdeterministicosAula 4   linguagens regularese automatosfinitosdeterministicos
Aula 4 linguagens regularese automatosfinitosdeterministicos
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Conjuntos
ConjuntosConjuntos
Conjuntos
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Aula 6 - Cardinalidade
Aula 6 - CardinalidadeAula 6 - Cardinalidade
Aula 6 - Cardinalidade
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 

Ähnlich wie Árvore Binária

Ähnlich wie Árvore Binária (7)

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
 
17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de busca
 
Inf01203 arvbinarias
Inf01203 arvbinariasInf01203 arvbinarias
Inf01203 arvbinarias
 

Kürzlich hochgeladen

Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxKtiaOliveira68
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaJúlio Sandes
 

Kürzlich hochgeladen (20)

Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
 

Á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."