Estruturas de Dados Árvores Binárias

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Marco Antonio Montebello Júnior
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
Listas duplamente encadeadas
Árvores.

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Pesquisa em Árvores Digitais
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Fundamentos sobre Árvores
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
INTELIGÊNCIA ARTIFICIAL
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Árvores Binárias de Pesquisa
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Listas lineares Denise Guliato Faculdade de Computação – UFU
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 17: Estruturas Genéricas
Estruturas de Dados Aula 15: Árvores
Aula 06 – 05/04 Árvores binárias.
Prof. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
Prof. Hilton Cardoso Marins Junior
Introdução a Árvores e Árvores Binárias
Árvores e Árvores Binárias
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Estruturas de Dados Árvores Binárias Prof. Rosana Palazon

Árvores Binárias É um tipo particular de árvore Cada item em uma árvore binária consiste de uma informação, e mais dois elos de ligação: um para o membro esquerdo e outro para o membro direito. info esquerdo direito

Árvores Binárias de Busca As árvores binárias, quando ordenadas, conduzem a operações de busca, inserção e exclusão muito rápidas. Nestes casos são chamadas de árvores binárias de busca.

Árvores Binárias de Busca Definição básica: struct arv{ int info; struct arv *esq; struct arv *dir; }; typedef struct arv Arv; ou a informação desejada

ABB - Principais funções //cria arvore vazia Arv* abb_cria() { return NULL; } //verifica se a árvore esta vazia int abb_vazia(Arv* a) return a == NULL;

ABB - Principais funções (cont.) // inserção interativa na ABB Arv *abb_insere(Arv* a,int c) { Arv *p,*q,*r; p=(Arv*)malloc(sizeof(Arv)); p->info = c; p->esq = p->dir = NULL; if (abb_vazia(a)) //1º elem. da árv. a=p; else { q=a; while(q!=NULL) { r=q; if(c < q->info) q=q->esq; else q=q->dir; } if(c < r->info) r->esq=p; else r->dir=p; } return a;

ABB - Principais funções (cont.) //inserção recursiva na ABB Arv* abb_insere(Arv *a, int v){ if (a==NULL){ a=(Arv*) malloc(sizeof(Arv)); ainfo=v; aesq=adir=NULL; } else if (v< ainfo) aesq=abb_insere(aesq,v); else adir=abb_insere(adir,v); return a; RECURSIVIDADE

ABB - Principais funções (cont.) //busca um elemento na Abb Arv* abb_busca(Arv *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; }

ABB - Principais funções (cont.) // remoção de um nó da ABB Arv* abb_retira(Arv *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 elemento*/ /* elemento sem filhos */ if (resq==NULL && rdir==NULL) { free (r); r=NULL; } /* só tem um filho à direita */ else if (resq==NULL) { Arv* t=r; r=rdir; free(t); /* só tem um filho à esquerda */ else if (rdir==NULL) { Arv *t=r; r=resq; free (t);

ABB – Funções de percurso // percurso em ordem esq – raiz - dir void abb_mostraEmOrdem(Arv *a){ if (a!=NULL){ abb_mostraEmOrdem(aesq); printf(“%d\n”, ainfo); abb_mostraEmOrdem(adir); } //percurso em preordem raiz – esq - dir void abb_mostraPreOrdem(Arv *a){ abb_mostraPreOrdem(aesq); abb_mostraPreOrdem(adir);

ABB – Funções de percurso (cont.) // percurso em PosOrdem – esq – dir - raiz void abb_mostraPosOrdem(Arv *a){ if (a!=NULL){ abb_mostraEmOrdem(aesq); abb_mostraEmOrdem(adir); printf(“%d\n”, ainfo); }

ABB - Outras funções //altura da arvore int max2 (int a, int b) { return (a>b)?a:b; } int abb_altura(Arv *a) if (abb_vazia(a)) return -1; return 1+ max2(abb_altura(a->esq),abb_altura(a->dir));

ABB - Outras funções //altura da arvore int max2 (int a, int b) { return (a>b)?a:b; } int abb_altura(Arv *a) if (abb_vazia(a)) return -1; return 1+ max2(abb_altura(a->esq),abb_altura(a->dir));

ABB – Exemplo de main() int main() { int num; Arv *a=abb_cria(); int v; //insere elementos na abb até que um -1 seja digitado do{ printf("Entre com o valor a ser inserido, ou -1 para finalizar:\n"); scanf("%d", &num); if(num>=0) a=abb_insere(a,num); }while(num>=0); abb_imprime2(a); //imprime em ordem printf("\n\n"); system("pause"); return 0; }

Árvores binárias - considerações Uma árvore binária é uma forma especial de lista encadeada. Pode-se inserir, acessar e remover itens em qualquer ordem.(Operações de recuperação não são destrutivas) A maioria das funções que usam árvores são recursivas, como a própria árvore. O processo de acesso a cada nó da árvore gera algoritmos diferentes, como os de busca em profundidade, busca em amplitude, etc... A busca em profundidade percorre todos os nós de um ramo (subárvore) até atingir os nós terminais, repetindo o processo em todos os ramos. (preordenada) Na busca em amplitude são visitadas a subárvore à esquerda, a raiz e a subárvore à direita, também repetindo o processo em todos os ramos.