Fundamentos sobre Árvores

Slides:



Advertisements
Apresentações semelhantes
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Advertisements

Marco Antonio Montebello Júnior
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Estruturas de Dados Árvores Binárias
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Programação II Estruturas de Dados
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Organização e Recuperação da Informação
Série de Exercícios.
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Árvores Digitais
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Árvores e Árvores Binárias
EQUAÇÕES POLINOMIAIS Prof. Marlon.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Pesquisa em Memória Primária (cont.)
Listas com Ponteiros Listas encadeadas Listas circulares.
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Robson Godoi / Sandra Siebra
Listas Encadeadas.
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Prof. Ernesto Lindstaedt
Árvore Binária de Busca
exercícios listas encadeadas
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
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
TAD Pilha com Alocação Dinâmica de Memória
Heap Sort TPA – Prof. Mateus Costa
Algorítmos e estrutura de dados III
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.
Algoritmos e Estrutura de Dados III
Árvores Balanceadas Liliane Rose Benning Salgado.
Rotação Simples e Dupla Katia Guimarães
Á R V O R E S.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Transparências da profa. Renata Galante da II/UFRGS com permissão
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
Prof. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Prof. Hilton Cardoso Marins Junior

Universidade do Vale do Rio dos Sinos - São Leopoldo -
Introdução a Árvores e Árvores Binárias
1 de outubro de Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.
Prof. Daniel Morais dos Reis
Árvores e Árvores Binárias
Árvores Estrutura de dados que se caracteriza por uma relação de
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
BANCO DE DADOS II Árvore de Dados. FATEC - GUARATINGUETÁ Professor: Eduardo Barbosa Adiel Lemos Ana Renata Bruno Michael Jéssica Fernanda Layla Monique.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Árvores.
Transcrição da apresentação:

Fundamentos sobre Árvores Uma árvore é um conjunto finito de n nós com n > 0. Quando n = 0 temos uma árvore nula. Supondo que n > 0 temos uma árvore com as seguintes características: Existe um nó especial chamado raiz; Os demais são particionados em T1, T2, . . . . . , TK estruturas disjuntas de árvores denominadas subárvore. Como as estruturas são disjuntas, garante-se que um nó não aparecerá em mais de uma subárvore.

Grau: Representa o número de subárvores de um nó Grau: Representa o número de subárvores de um nó. O nó “a” da árvore da figura tem grau 3. Já o nó “h” tem grau 2. Nó folha ou terminal: É o nó que possui grau 0, ou seja, não possui subárvores. Na figura, os nós ‘e’, ’g’, ’k’, ’l’, ’m’, ’i’ e ‘j’ são folhas. Grau de uma árvore (n-aridade): É definido como sendo igual ao máximo dos graus de todos os seus nós. Na figura o grau da árvore é 3. Nós filhos: São as raízes das subárvores de um nó, e este nó é o pai delas. Considerando a figura, os nós ‘e’, ‘f’ e ‘g’ são filhos do nó ‘b’. O nó ‘b’, por sua vez, é filho do nó ‘a’. Nós irmãos: São os nós filhos que apresentam o mesmo pai (existe ainda nó ancestral, descendente, descendente esquerdo ou direito). Os nós ‘e’, ‘f’, e ‘g’, são nós irmãos, porque têm o mesmo pai ’b’. Nível: Nível de um nó é sua distância da raiz da árvore. Como a raiz tem uma distância zero de si própria, diz-se que ela tem nível 0. Na figura os nós ‘b’ , ‘c’ e ‘d’ estão no nível 1. Os nós ‘e’, ‘f’, ‘g’, ‘h’, ‘i’ e ‘j’ estão no nível 2.E, finalmente, os ‘k’, ‘l’ e ‘m’ estão no nível 3 Altura (também denominada por profundidade): É o nível do nó folha que tem o mais longo caminho até a raiz, somado um. Por definição, a altura de uma árvore vazia é -1 . A altura da árvore da figura é 4. Observe a figura:

Representação de uma Árvore c d i j h m l b g f e k Nível 0 Nível 1 Nível 2 Nível 3

Arvores Binárias Trata-se de uma árvore que pode ser nula ou apresentar as seguintes características: Um nó especial chamado raiz; Os demais nós são partiocinados em T1, T2 estruturas disjuntas de árvores binárias. A estrutura T1 é chamada de subárvore esquerda e T2 subárvore direita da raiz. Cada subárvore é também, por definição, uma árvore binária; Considerando que precisamos armazenar n nós em uma árvore binária, sua altura máxima é obtida por Hmax = n ; entretanto uma árvore binária com altura máxima é rara. Isso ocorre quando a árvore inteira é construída em uma única direção. A altura mínima é determinada por hmax = (log2 N) + 1 ; Dada a altura da árvore binária h, o número mínimo e máximo de nós é conseguido pelas fórmulas nmin = h e nmax = 2h – 1 ; Árvores binárias estritamente binária: Ocorre quando todo nó que não é folha tiver subarvores esquerda e direita não vazias. Uma árvore estritamente binária com n folhas contém sempre 2n – 1 nós ; Árvore binária completa : È uma árvore estritamente binária de profundidade d , cujas folhas estejam no nível d. Considerando tn como o número total de nós em uma árvore binária completa de altura h, observamos a seguinte relação: Tn = 2h - 1 ; Uma árvore binária completa contém muitos nós, porém a distância do nó-raiz até qualquer folha (altura da árvore) pode ser considerada pequena.

Duas árvores binárias distintas com subárvores nulas

Árvore Estritamente Binária C D F E G

Árvore Binária completa de altura 4 J K F L M G N O B C A D H I

Árvore de busca binária e ilustração das propriedades dessa Árvore f Todos < x Todos ≥ x

14 4 15 3 9 14 18 7 9 16 20 5 17 4 5

Representação de um nó em uma árvore binária struct tree { char info; struct tree *esq, *dir; }; Typedef struct tree *TREEPTR;

void tInsere (TREEPTR *plist , char x) { if ( ( *plist) ==NULL) ( *plist=(TREEPTR) malloc (sizeof (struct tree) ) ; (*plist) ->info=x; (*plist)->esq=NULL; (*plist)->dir=NULL; } else{ if (x<(*plist)->info){ tInsere (&((*plist)->esq),x); else tInsere (&((*plist)->dir),x);

Pesquisa de um elemento Se T é uma árvore nula, não há o que pesquisar Se a raiz de T armazena o elemento x, a solução é imediata Se x é menor que o valor da raiz de T, a busca prossegue na subarvore esquerda de T Se x é maior ou igual a T, a busca prossegue na subarvore direita de T

TREEPTR tPesq(TREEPTR *plist, char x) { if (*plist==NULL) /*elemento nao encontrado */ return (NULL) ; else if (x== (*plist)->info) /*elemento encontrado na raiz*/ return(*plist); if (x<(*plist)->info) /*procura-o numa subarvore*/ return(tPesq(&((*plist)->esq),x)); return(tPesq(&((*plist)->dir),x)); }

Remoção de um elemento Se a raiz não possui filhos, a solução é imediata. Podemos removê-la e anular T Se a raiz possui um único filho,podemos remover o nó pai e o nó filho toma seu lugar Se a raiz possui dois filhos o nó com maior elemento à esquerda é removido. Seu elemento é colocado na raiz da árvore

(a) Remoção do nó (41) sem nenhum filho Antes Depois t t 20 20 15 41 15 (a) Remoção do nó (41) sem nenhum filho

(b) Remoção do nó (41) com nenhum filho à esquerda. Antes Depois t t 20 20 15 41 15 49 9 49 9 (b) Remoção do nó (41) com nenhum filho à esquerda.

(b) Remoção do nó (15) com nenhum filho à direita. Antes Depois t t 20 20 15 41 9 41 9 49 49 (b) Remoção do nó (15) com nenhum filho à direita.

(b) Remoção do nó (20) com 2 filhos. Antes Depois t t 20 11 9 41 9 41 11 5 49 5 49 (b) Remoção do nó (20) com 2 filhos.

TREEPTR tMaior (TREEPTR *plist) { TREEPTR t; t=*plist; if (t->dir=NULL) { *plist= (*plist)->esq; return (t); } else return (tMaior (&((*plist) ->dir)));

int tRemove (TREEPTR *plist , char *x) { TREEPTR p; if (*plist==NULL) return(1); /*elemento nao encontrado */ if ((*x==(*plist)->info)==1) /*elemento encontrado na raiz */ p=*plist; if ((*plist)->esq==NULL) *plist=(*plist)-> dir; /* a raiz nao tem filho esquerdo */ else if((*plist)->dir==NULL) *plist=(*plist)->esq; /* a raiz nao tem filho direito */ /* a raiz tem ambos os filhos */ p=tMaior(&((*plist)->esq) ); (*plist) -> info=p ->info; } free (p); printf (“\nElemento achado e removido”) ; if ((*x<(*plist)->info)==1) tRemove(&((*plist)->esq).x) ; /*procura na subarvore esquerda */ tRemove(&((*plist)->dir).x) ; /*procura na subarvore direita */