Upload
luiz
View
231
Download
0
Embed Size (px)
Citation preview
7/24/2019 Arvore Bin Exemplo
1/22
Estrutura de Dados
rvore Binria
Exemplo de Implementao
Prof. Pedro Lus Antonelli
Anhanguera Educacional
7/24/2019 Arvore Bin Exemplo
2/22
Lista Encadeada - Exemplo
Exemplo de cdigo para a implementao de uma rvore binria encadeada
emC, para armazenarvalores inteiros, utilizado o compilador GNU g++
#include
typedef struct arvore
{
char info;
struct arvore *esq;
struct arvore *dir;
} Arv;
7/24/2019 Arvore Bin Exemplo
3/22
Funes de criao e teste
Arv* inicializa( void ) // funo que inicializa uma rvore
{
return NULL;
}
//------------------------------------------------------------------------
int vazia( Arv* a ) // funo que testa se a rvore est vazia
{return a==NULL;
}
7/24/2019 Arvore Bin Exemplo
4/22
Funo que cria um rvore
Arv* cria(char c, Arv* sub_arv_e, Arv* sub_arv_d )
{
Arv* p = ( Arv* )malloc( sizeof( Arv ) );
p->info = c;
p->esq = sub_arv_e;
p->dir = sub_arv_d;
return p;}
7/24/2019 Arvore Bin Exemplo
5/22
Funo que imprime a rvore
void imprime ( Arv* a )
{
if (!vazia( a ) )
{
printf(" %c ", a->info); // mostra raiz
imprime(a->esq); // mostra sae
imprime(a->dir); // mostra sad
}}
7/24/2019 Arvore Bin Exemplo
6/22
Funo que libera a memria alocada para a rvore
Arv* libera ( Arv* a )
{
if (!vazia( a ) )
{
libera(a->esq); // libera saelibera(a->dir); // libera sad
free(a); // libera raiz
}
return NULL;
}
7/24/2019 Arvore Bin Exemplo
7/22
Funo que retorna a altura de uma rvore
int altura (Arv* a)
{
if ( vazia( a ) ) { return -1; }
else {
if (altura ( a->esq ) > altura ( a->dir ) ) { return 1 + altura ( a->esq ); }
else {
return 1 + altura ( a->dir );
}}
}
7/24/2019 Arvore Bin Exemplo
8/22
Funo que procura um elemento em uma rvore
int busca (Arv* a, char c){
if (vazia(a))
return 0; // rvore vazia: no encontrou
else
return a->info==c || busca(a->esq,c) || busca(a->dir,c);
}
7/24/2019 Arvore Bin Exemplo
9/22
Teste das funes criadas
int main( )
{
Arv* no_1= cria(D',inicializa() ,inicializa() ); // sub-rvore D'
7/24/2019 Arvore Bin Exemplo
10/22
Teste das funes criadas
Arv* no_1= cria(D',inicializa() ,inicializa() ); // sub-rvore comD'
Arv* no_2= cria(B',inicializa(), no_1 ); // sub-rvore comB'
7/24/2019 Arvore Bin Exemplo
11/22
Teste das funes criadas
Arv* no_1= cria(D',inicializa() ,inicializa() ); //sub-rvore com 'D'
Arv* no_2= cria(B',inicializa(), no_1 ); // sub-rvore com 'B'Arv* no_3=cria(E',inicializa(), inicializa() ); // sub-rvore com 'E'
7/24/2019 Arvore Bin Exemplo
12/22
Teste das funes criadas
Arv* no_1= cria(D',inicializa() ,inicializa() ); //sub-rvore comD'
Arv* no_2= cria(B',inicializa(), no_1 ); // sub-rvore comB'Arv* no_3=cria(E',inicializa(), inicializa() ); // sub-rvore comE'
Arv* no_4=cria(F',inicializa(), inicializa() ); // sub-rvore comF'
7/24/2019 Arvore Bin Exemplo
13/22
Teste das funes criadas
Arv* no_1= cria(D',inicializa() ,inicializa() ); //sub-rvore comD'
Arv* no_2= cria(B',inicializa(), no_1 ); // sub-rvore comB'
Arv* no_3=cria(E',inicializa(), inicializa() ); // sub-rvore comE'
Arv* no_4=cria(F',inicializa(), inicializa() ); // sub-rvore comF'
Arv* no_5=cria(C,no_3, no_4); // sub-rvore comC'
7/24/2019 Arvore Bin Exemplo
14/22
Arv* no_1= cria(D',inicializa() ,inicializa() ); //sub-rvore comD'
Arv* no_2= cria(B',inicializa(), no_1 ); // sub-rvore comB'
Arv* no_3=cria(E',inicializa(), inicializa() ); // sub-rvore comE'
Arv* no_4=cria(F',inicializa(), inicializa() ); // sub-rvore comF'Arv* no_5=cria(C,no_3, no_4); // sub-rvore comC'
Arv* arvore =cria(A',no_2, no_5 ); // rvore com raizA'
7/24/2019 Arvore Bin Exemplo
15/22
printf("Arvore antes do acrescimo dos nos: x, y, z \n \n");
imprime(arvore);
printf("\n \n altura da arvore = %d \n \n ",altura(arvore));
7/24/2019 Arvore Bin Exemplo
16/22
arvore->esq->esq = cria('x',
cria('y',inicializa(),inicializa()),cria('z',inicializa(),inicializa()) );
printf("\n \n Arvore apos o acrescimo dos nos: x, y, z \n \n");
imprime(arvore);
printf("\n \n altura da arvore = %d \n \n ",altura(arvore));
7/24/2019 Arvore Bin Exemplo
17/22
arvore->dir->esq = libera( arvore->dir->esq );
printf("\n \n Arvore apos a retirada do no: e \n \n ");
imprime(arvore);
printf("\n \n altura da arvore = %d \n \n ",altura( arvore ) );
7/24/2019 Arvore Bin Exemplo
18/22
char elemento;
printf("Digite o elemento a ser procurado: ");
scanf("%c",&elemento);
if( busca(arvore, elemento) != 0 )
{
printf("\n Elemento encontrado! " );
}
else
{printf("\n Elemento no encontrado! " );
}
7/24/2019 Arvore Bin Exemplo
19/22
libera(arvore);
system("PAUSE");
return EXIT_SUCCESS;
}
7/24/2019 Arvore Bin Exemplo
20/22
Exerccios:
1- Modificar o cdigo apresentado para que o mesmo construa uma
rvore binria completa de altura 3;
2- Implementar as funes para imprimir essa rvore das quatromaneiras vistas em aula ( ordem, pr-ordem, ps-ordem e em nvel ).
Envia para o [email protected] at 24/11/2015
mailto:[email protected]:[email protected]:[email protected]7/24/2019 Arvore Bin Exemplo
21/22
BIBLIOGRAFIA
W. Celes, W. R. Cerqueira, J.L. Rangel. Introduo a Estruturas de Dados -
com tcnicas de programao em CEd. Campus
TENENBAUM, Aaron M. Estrutura de Dados Usando C. 1 ed. So Paulo:PEARSON EDUCATION, 2005.
VELOSO, Paulo A. S.. Estrutura de Dados. 1 ed. Rio de Janeiro: Campus,1996.
PEREIRA, Silvio do Lago. Estrutura De Dados Fundamentais : ConceitosE Aplicaes. 12 ed. SoPaulo: rica, 2008
7/24/2019 Arvore Bin Exemplo
22/22
MANZANO, Jos Augusto N. Garcia. Algoritmos : Lgica paradesenvolvimento de programao de computadores. 21 ed.So Paulo:
rica, 2008.
FORBELLONE, A. L.. Lgica De Programao. 1 ed. So Paulo: Pearson,2008.
CORMEN, Thomas H.. Algoritmos : Teoria e Prtica. 2 ed. Rio de Janeiro:Campus, 2002.
http://www.jacintomendes.eti.br/mackenzie/peii/aulas/sandra/PEII_Aula12.pdf. Acesso em 02/02/2012
http://www.dainf.ct.utfpr.edu.br/~karla/Acesso em 02/02/2012
http://www.rcosta62br.unifei.edu.brAcesso em 03/02/2012
http://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlAcesso em 10/04/2012
http://www.jacintomendes.eti.br/mackenzie/peii/aulas/http://www.dainf.ct.utfpr.edu.br/~karla/http://www.rcosta62br.unifei.edu.br_ccf120_aula_2%29acesso/http://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://www.rcosta62br.unifei.edu.br_ccf120_aula_2%29acesso/http://www.dainf.ct.utfpr.edu.br/~karla/http://www.jacintomendes.eti.br/mackenzie/peii/aulas/