rvores David Menotti Algoritmos e Estruturas de Dados

  • Slides: 14
Download presentation
Árvores David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP

Árvores David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP

Conceitos básicos n n Organiza um conjunto de acordo com uma estrutura hierárquica. Contém

Conceitos básicos n n Organiza um conjunto de acordo com uma estrutura hierárquica. Contém elementos que são chamados de nós O “pai de todos” é a raiz – 1º. da hierarquia O contéudo de um nó pode ser de qualquer tipo que se deseje representar © David Menotti Algoritmos e Estrutura de Dados I

Definição (Aho, Hopcroft e Ullman - 1983) q q Um único nó é uma

Definição (Aho, Hopcroft e Ullman - 1983) q q Um único nó é uma árvore. Este nó é raiz da árvore. Suponha que n é um nó e T 1, T 2, . . . , Tk sejam árvores com raizes n 1, n 2, . . . , nk, respectivamente. Podemos construir uma nova árvore tornando n a raiz e T 1, T 2, . . , Tk sejam subárvores da raiz. Nós n 1, n 2, . . . , nk são chamados filhos do nó n. © David Menotti Algoritmos e Estrutura de Dados I

Caminho n n n Um caminho de ni a nk, onde ni é antecedente

Caminho n n n Um caminho de ni a nk, onde ni é antecedente a nk, é a sequência de nós para se chegar de ni a nk. Se ni é antecedente a nk, nk é descendente de ni O comprimento do caminho é o número de nós do caminho – 1. © David Menotti Algoritmos e Estrutura de Dados I

Outros conceitos n n n Nó que não tem antecedente: raiz; Nós que não

Outros conceitos n n n Nó que não tem antecedente: raiz; Nós que não tem descendentes são chamados de nós folhas. (Os outros são os nós internos) A altura de um nó na árvore é o caminho de maior comprimento que se pode fazer deste nó a uma folha. A altura da árvore é a altura de sua raiz. A profundidade de um nó é o comprimento da raiz até o nó (só existe um caminho) © David Menotti Algoritmos e Estrutura de Dados I

Caminhamento n A ordem dos filhos dos nós em uma árvore pode ser ou

Caminhamento n A ordem dos filhos dos nós em uma árvore pode ser ou não significativa. q q n Exemplos, no heap, a ordem dos filhos não tem significado Outros casos, pode se ter um significado (como veremos em pesquisa em árvores binárias) Considera-se que se a e b são nós irmãos, e a está à esquerda de b, então todos seus descendentes estão à esquerda de b e todos os descendentes de b. © David Menotti Algoritmos e Estrutura de Dados I

Caminhamento n Diversas formas de percorrer ou caminhar em uma árvore listando seus nós,

Caminhamento n Diversas formas de percorrer ou caminhar em uma árvore listando seus nós, as principais: q q q n Pré-ordem (Pré-fixa) Central (Infixa) Pós-ordem (Pós-fixa) Para todas elas: q q q Se T é uma árvore nula, então a lista é nula. Se T é uma árvore de um único nó então a lista contém apenas este nó. O tratamento é diferenciado para os filhos © David Menotti Algoritmos e Estrutura de Dados I

Pré-Ordem n Pré-ordem: lista o nó raiz, seguido de suas subárvores (da esquerda para

Pré-Ordem n Pré-ordem: lista o nó raiz, seguido de suas subárvores (da esquerda para a direita), cada uma em pré-ordem. Procedimento PREORDEM (n: Tipo. No); Início Lista(n); Para cada filho f de n, da esquerda para direita faça PREORDEM(f); Fim © David Menotti Algoritmos e Estrutura de Dados I

Central n Central: lista os nós da 1ª. subárvore à esquerda usando o caminhamento

Central n Central: lista os nós da 1ª. subárvore à esquerda usando o caminhamento central, lista o nó raiz n, lista as demais subárvores (a partir da 2ª. ) em caminhamento central (da esquerda para a direita) Procedimento CENTRAL (n: Tipo. No); Início Se Folha(n) então /* Folha retorna se n é uma folha da árvore ou não) Lista(n); Senão CENTRAL (Filho. Mais. Esquerda(n)); Lista (n); Para cada filho f de n, exceto o mais à esquerda, da esquerda para a direita faça CENTRAL (f); Fim; © David Menotti Algoritmos e Estrutura de Dados I

Pós-Ordem n Pós-ordem: Lista os nós das subárvores (da esquerda para a direita) cada

Pós-Ordem n Pós-ordem: Lista os nós das subárvores (da esquerda para a direita) cada uma em pós-ordem, lista o nó raiz. Procedimento POSORDEM Início Para cada filho f de n, da esquerda para direita faça POSORDEM(f); Lista(n); Fim; © David Menotti Algoritmos e Estrutura de Dados I

Exercício n n Crie em C a estrutura de uma árvore binária cuja informação

Exercício n n Crie em C a estrutura de uma árvore binária cuja informação seja um inteiro. Escreva funções que recebam um ponteiro para a raiz da árvore e façam: q q q o caminhamento pré-ordem o caminhamento pós-ordem o caminhamento central © David Menotti Algoritmos e Estrutura de Dados I

Classificação de Árvores n Árvore Estritamente Binária q Se cada nó não-folha em uma

Classificação de Árvores n Árvore Estritamente Binária q Se cada nó não-folha em uma árvore binária não tem subárvores esquerda e direita vazias © David Menotti Algoritmos e Estrutura de Dados I

Classificação de Árvores n Árvore Binária Completa q Uma árvore binária completa de nível

Classificação de Árvores n Árvore Binária Completa q Uma árvore binária completa de nível n é a árvore estritamente binária, onde todos os nós folhas estão no nível n. © David Menotti Algoritmos e Estrutura de Dados I

Classificação de Árvores n Árvore Binária Quase Completa q Uma árvore binária de nível

Classificação de Árvores n Árvore Binária Quase Completa q Uma árvore binária de nível n é uma árvore binária quase completa se: q q © David Menotti Cada nó folha na árvore esta no nível n ou no nível n-1 Para cada nó nd na árvore com um descentente direito no nível n, todos os descendentes esquerdos de nd que são folhas estão também no nível n Algoritmos e Estrutura de Dados I