Árvore Binária Exemplo de Implementação

Documentos relacionados
Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM

Métodos Computacionais. Árvores

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

struct arv { char info; struct arv* esq; struct arv* dir; };

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Árvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD

INF 1007 Programação II

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

INF 1620 P2-01/11/03 Questão 1 Nome:

Linguagem C: Árvores Binarias

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Árvore Binária de Busca. Prof. César Melo

Algoritmos e Estruturas de dados

Figura 13.1: Um exemplo de árvore de diretório.

INF 1620 P2-23/10/04 Questão 1 Nome:

Árvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação

Aula 08. Estruturas de dados Árvore e Grafo

Aula T13 BCC202 Árvores. Túlio Toffolo

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Árvores Binárias de Busca (ABB) 18/11

Estruturas de Dados Aula 15: Árvores 17/05/2011

Estruturas de Dados I

GABARITO EXERCÍCIOS ÁRVORES arv.h struct noarv { int info; struct noarv * esq; struct noarv * dir; }; typedef struct noarv NoArv;

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Busca. Pesquisa sequencial

ÁRVORE BINÁRIA DE BUSCA

As duas soluções a seguir são exemplos da variedade de soluções admissíveis.

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

DAINF - Departamento de Informática

/* percorreu todo o vetor e não encontrou elemento */ return -1;

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

DATA STRUCTURES, AN ADVANCED APPROACH USING C

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Pesquisa Linear. Adriano J. Holanda 15/3/2016

LP II Estrutura de Dados

Árvores & Árvores Binárias

Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores Binárias de Busca (ABB) 18/11

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Árvores. Prof. César Melo ICOMP/UFAM

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Módulo 10 Listas Encadeadas

BCC202 - Estrutura de Dados I

Árvores Binárias - continuação

INF P3-23/06/07 Questão 1 Nome:

Árvores de Pesquisa (Parte I)

INF 1007 Programação II

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Estruturas de Dados II

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

INF 1620 P4-06/12/02 Questão 1 Nome:

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Transcrição:

Estrutura de Dados Árvore Binária Exemplo de Implementação Prof. Pedro Luís Antonelli Anhanguera Educacional

Lista Encadeada - Exemplo Exemplo de código para a implementação de uma árvore binária encadeada em C, para armazenar valores inteiros, utilizado o compilador GNU g++ #include <iostream> typedef struct arvore char info; struct arvore *esq; struct arvore *dir; Arv;

Funções de criação e teste Arv* inicializa( void ) return NULL; // função que inicializa uma árvore //------------------------------------------------------------------------ int vazia( Arv* a ) return a==null; // função que testa se a árvore está vazia

Função 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;

Função que imprime a árvore void imprime ( Arv* a ) if (!vazia( a ) ) printf(" %c ", a->info); imprime(a->esq); imprime(a->dir); // mostra raiz // mostra sae // mostra sad

Função que libera a memória alocada para a árvore Arv* libera ( Arv* a ) if (!vazia( a ) ) libera(a->esq); libera(a->dir); free(a); return NULL; // libera sae // libera sad // libera raiz

Função 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 );

Função que procura um elemento em uma árvore int busca (Arv* a, char c) if (vazia(a)) return 0; // árvore vazia: não encontrou else return a->info==c busca(a->esq,c) busca(a->dir,c);

Teste das funções criadas int main( ) Arv* no_1= cria( D', inicializa(),inicializa() ); // sub-árvore D'

Teste das funções criadas Arv* no_1= cria( D', inicializa(),inicializa() ); Arv* no_2= cria( B', inicializa(), no_1 ); // sub-árvore com D' // sub-árvore com B'

Teste das funções criadas Arv* no_1= cria( D', inicializa(),inicializa() ); Arv* no_2= cria( B', inicializa(), no_1 ); Arv* no_3= cria( E', inicializa(), inicializa() ); //sub-árvore com 'D' // sub-árvore com 'B' // sub-árvore com 'E'

Teste das funções criadas Arv* no_1= cria( D', inicializa(),inicializa() ); Arv* no_2= cria( B', inicializa(), no_1 ); Arv* no_3= cria( E', inicializa(), inicializa() ); Arv* no_4= cria( F', inicializa(), inicializa() ); //sub-árvore com D' // sub-árvore com B' // sub-árvore com E' // sub-árvore com F'

Teste das funções criadas Arv* no_1= cria( D', inicializa(),inicializa() ); Arv* no_2= cria( B', inicializa(), no_1 ); Arv* no_3= cria( E', inicializa(), inicializa() ); Arv* no_4= cria( F', inicializa(), inicializa() ); Arv* no_5= cria( C, no_3, no_4); //sub-árvore com D' // sub-árvore com B' // sub-árvore com E' // sub-árvore com F' // sub-árvore com C'

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' Arv* no_4= cria( F', inicializa(), inicializa() ); // sub-árvore com F' Arv* no_5= cria( C, no_3, no_4); // sub-árvore com C' Arv* arvore = cria( A', no_2, no_5 ); // árvore com raiz A'

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));

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));

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 ) );

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 não encontrado! " );

libera(arvore); system("pause"); return EXIT_SUCCESS;

Exercícios: 1- Modificar o código apresentado para que o mesmo construa uma árvore binária completa de altura 3; 2- Implementar as funções para imprimir essa árvore das quatro maneiras vistas em aula ( ordem, pré-ordem, pós-ordem e em nível ). Envia para o email ed_2015@pedraorc.com.br até 24/11/2015

BIBLIOGRAFIA W. Celes, W. R. Cerqueira, J.L. Rangel. Introdução a Estruturas de Dados - com técnicas de programação em C Ed. Campus TENENBAUM, Aaron M. Estrutura de Dados Usando C. 1ª ed. São 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 : Conceitos E Aplicações. 12ª ed. São Paulo: Érica, 2008

MANZANO, José Augusto N. Garcia. Algoritmos : Lógica para desenvolvimento de programação de computadores. 21ª ed.são Paulo: Érica, 2008. FORBELLONE, A. L.. Lógica De Programação. 1ª ed. São Paulo: Pearson, 2008. CORMEN, Thomas H.. Algoritmos : Teoria e Prática. 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.br Acesso em 03/02/2012 http://gaveta-virtual.blogspot.com.br/2011/06/filas.html Acesso em 10/04/2012