UPE Caruaru Sistemas de Informao Disciplina Estrutura de

  • Slides: 24
Download presentation
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.

UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof. : Paulemir G. Campos Árvores Binárias: Construção e Percursos 12/7/2020 EDA - Prof. Paulemir Campos 1

Árvores Binárias: Definições n n n São estruturas de dados onde existe uma relação

Árvores Binárias: Definições n n n São estruturas de dados onde existe uma relação hierárquica entre seus elementos constituíntes, chamados nós; Há um nó principal, chamado raiz da árvore; A partir da raiz da árvore, cada nó pode ter no máximo dois nós, chamados filhos esquerdo e direito. 12/7/2020 EDA - Prof. Paulemir Campos 2

Árvores Binárias: Definições n n Por sua vez, um filho esquerdo ou direito de

Árvores Binárias: Definições n n Por sua vez, um filho esquerdo ou direito de um nó P também é uma árvore. Ou ainda, o filho esquerdo de um nó P é a Sub-Árvore Esquerda do nó P e o seu filho direito é a Sub -Árvore Direita de P; Contudo, a raiz de uma árvore binária e suas respectivas sub-árvores esquerda e direita devem formar sub-conjuntos finitos e disjuntos de nós. 12/7/2020 EDA - Prof. Paulemir Campos 3

Árvores Binárias: Exemplos Raiz da Árvore T Sub-Árvore Esquerda A B D E G

Árvores Binárias: Exemplos Raiz da Árvore T Sub-Árvore Esquerda A B D E G 12/7/2020 Sub-Árvore Direita C H F I EDA - Prof. Paulemir Campos 4

Árvores Binárias: Exemplos Raiz da Árvore T 2 Raiz da Árvore T 1 A

Árvores Binárias: Exemplos Raiz da Árvore T 2 Raiz da Árvore T 1 A B Filho Esquerdo ou Sub-Árvore Esquerda de T 1 12/7/2020 A T 1 T 2 B Note que as árvores binárias T 1 e T 2 são diferentes, pois, apesar de terem o mesmo conteúdo na raiz, o conteúdo de seus respectivos nós filhos direito e esquerdo são diferentes. EDA - Prof. Paulemir Campos Filho Direito ou Sub-Árvore Direita de T 2 5

Árvores Binárias: Contra exemplos Exemplos de estruturas que não são árvores binárias. Sub-Árvore Esquerda

Árvores Binárias: Contra exemplos Exemplos de estruturas que não são árvores binárias. Sub-Árvore Esquerda B D G Sub-Árvore Direita A H Sub-Árvore Esquerda C E A F I B D G C E F Sub-Árvore Direita I 12/7/2020 EDA - Prof. Paulemir Campos 6

Árvores Binárias: Características n n Possuem um ponteiro para o nó raiz da árvore;

Árvores Binárias: Características n n Possuem um ponteiro para o nó raiz da árvore; Cada nó pode ter até dois filhos; Raiz e Sub-Árvores Direita e Esquerda devem constituir conjuntos disjuntos; Em informática, crescem de cima para baixo, já que a raiz fica no topo (nível zero). 12/7/2020 EDA - Prof. Paulemir Campos 7

Árvores Binárias: Nós n O grau de um nó representa o seu número de

Árvores Binárias: Nós n O grau de um nó representa o seu número de filhos; n n Ex. : Um nó de grau 2 indica que ele tem dois filhos. Tipos de nós: n n 12/7/2020 Folhas ou Externos – Não tem filhos. Não-Folhas ou Internos – Tem ao menos um filho. EDA - Prof. Paulemir Campos 8

Árvores Binárias: Profundidade n A profundidade ou altura de uma árvore binária é determinada

Árvores Binárias: Profundidade n A profundidade ou altura de uma árvore binária é determinada pelo seu maior nível. Nível 0 A B D G E H Nível 1 C F I Nível 2 Nível 3 A profundidade ou altura (h) da árvore binária acima é 3 (h=3). 12/7/2020 EDA - Prof. Paulemir Campos 9

Árvores Binárias: Tipos n Árvore Estritamente Binária: n Todo nó não-folha deve ter sub-árvores

Árvores Binárias: Tipos n Árvore Estritamente Binária: n Todo nó não-folha deve ter sub-árvores esquerda e direita não vazias. A B D F 12/7/2020 EDA - Prof. Paulemir Campos C E G 10

Árvores Binárias: Tipos n Árvore Binária Completa: n A É uma árvore estritamente binária

Árvores Binárias: Tipos n Árvore Binária Completa: n A É uma árvore estritamente binária em que todas as folhas estão no nível máximo da árvore. 12/7/2020 B D EDA - Prof. Paulemir Campos C E F G 11

Árvores Binárias: Tipos n Árvore Binária Quase Completa: n n 1 – Todas as

Árvores Binárias: Tipos n Árvore Binária Quase Completa: n n 1 – Todas as folhas estão no último ou penúltimo níveis; 2 – E, para cada nó com descendente direito no último nível, todos os descendentes esquerdos folhas também estiverem no último nível. 12/7/2020 A B D H C E F G I EDA - Prof. Paulemir Campos 12

Árvores Binárias Completas n Cálculo do Número de Nós: n O número de nós

Árvores Binárias Completas n Cálculo do Número de Nós: n O número de nós (n) é obtido com a fórmula abaixo, sendo fornecida a altura (h) da mesma. A B D C E F G Ex. : Na árvore acima de altura h=2, obtemos facilmente com a fórmula ao lado que o número de nós desta árvore binária completa é n=7. 12/7/2020 EDA - Prof. Paulemir Campos 13

Árvores Binárias Completas n Cálculo da Altura: n Sabendo-se o número de nós (n),

Árvores Binárias Completas n Cálculo da Altura: n Sabendo-se o número de nós (n), pode-se com a fórmula abaixo obter-se a sua altura (h). A B D C E F G Ex. : Na árvore binária completa acima, cujo número de nós é n=7, obtemos com a fórmula ao lado que sua altura é h=2. 12/7/2020 EDA - Prof. Paulemir Campos 14

Árvores Binárias: Criação n Definindo o tipo da estrutura: defina estrutura no { caracter

Árvores Binárias: Criação n Definindo o tipo da estrutura: defina estrutura no { caracter ponteiro estrutura no } t. Arvore 12/7/2020 dado esquerdo, direito EDA - Prof. Paulemir Campos 15

Árvores Binárias: Criação n Alocando memória dinamicamente ponteiro t. Arvore raiz = aloque(t. Arvore)

Árvores Binárias: Criação n Alocando memória dinamicamente ponteiro t. Arvore raiz = aloque(t. Arvore) 12/7/2020 EDA - Prof. Paulemir Campos 16

Árvores Binárias: Criação n Criando uma árvore binária: ponteiro t. Arvore func Cria. Arvore(caracter

Árvores Binárias: Criação n Criando uma árvore binária: ponteiro t. Arvore func Cria. Arvore(caracter novo){ ponteiro t. Arvore no no = aloque(t. Arvore) no->dado = novo no->esquerdo = NULL no->direito = NULL retorne no } 12/7/2020 EDA - Prof. Paulemir Campos 17

Árvores Binárias: Insere à Esquerda proc Insere_Esquerda(ponteiro t. Arvore raiz, caracter atual, caracter novo){

Árvores Binárias: Insere à Esquerda proc Insere_Esquerda(ponteiro t. Arvore raiz, caracter atual, caracter novo){ ponteiro t. Arvore folha se (raiz!=NULL){ se (raiz->dado==atual){ /* Encontrou o nó procurado */ se (raiz->esquerdo==NULL){ folha = Cria. Arvore(novo) raiz->esquerdo = folha } senão escreva(“Inserção inválida”) } senão { Insere_Esquerda(raiz->esquerdo, atual, novo) Insere_Esquerda(raiz->direito, atual, novo) } } } OBS. : Insere à direita é análogo a este. 12/7/2020 EDA - Prof. Paulemir Campos 18

Árvores Binárias: Percursos n Há três formas de se percorrer uma árvore binária não

Árvores Binárias: Percursos n Há três formas de se percorrer uma árvore binária não vazia: Passeio Pré-Fixo n Passeio Central n Passeio Pós-Fixo n 12/7/2020 EDA - Prof. Paulemir Campos 19

Árvores Binárias: Passeio Pré-Fixo (r-e-d) Visita-se a raiz; n Percorre-se a sub-árvore esquerda em

Árvores Binárias: Passeio Pré-Fixo (r-e-d) Visita-se a raiz; n Percorre-se a sub-árvore esquerda em ordem pré-fixa; n Percorre-se a sub-árvore direita em ordem pré-fixa. n 12/7/2020 EDA - Prof. Paulemir Campos 20

Árvores Binárias: Passeio Central (e-r-d) Percorre-se a sub-árvore esquerda em ordem central; n Visita-se

Árvores Binárias: Passeio Central (e-r-d) Percorre-se a sub-árvore esquerda em ordem central; n Visita-se a raiz; n Percorre-se a sub-árvore direita em ordem central. n 12/7/2020 EDA - Prof. Paulemir Campos 21

Árvores Binárias: Passeio Pós-Fixo (e-d-r) Percorre-se a sub-árvore esquerda em ordem pós-fixa; n Percorre-se

Árvores Binárias: Passeio Pós-Fixo (e-d-r) Percorre-se a sub-árvore esquerda em ordem pós-fixa; n Percorre-se a sub-árvore direita em ordem pós-fixa; n Visita-se a raiz. n 12/7/2020 EDA - Prof. Paulemir Campos 22

Exemplo de Passeios em Árvore Binária A Pré-Fixo (r-e-d): ABDGCEHIF B C Central (e-r-d):

Exemplo de Passeios em Árvore Binária A Pré-Fixo (r-e-d): ABDGCEHIF B C Central (e-r-d): DGBAHEICF D E F Pós-Fixo (e-d-r): GDBHIEFCA G 12/7/2020 H I EDA - Prof. Paulemir Campos 23

Referências n n Szwarcfiter, J. L. ; Markenzon, L. Estruturas de Dados e seus

Referências n n Szwarcfiter, J. L. ; Markenzon, L. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: LTC, 2 a. ed. , 1994. Veloso, P. et al. Estrutura de Dados. Rio de Janeiro: Editora Campus, 1996. 12/7/2020 EDA - Prof. Paulemir Campos 24