270 likes | 621 Views
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos. Árvores Binárias: Construção e Percursos. Árvores Binárias: Definições. São estruturas de dados onde existe uma relação hierárquica entre seus elementos constituíntes, chamados nós;
E N D
UPE – Caruaru – Sistemas de InformaçãoDisciplina: Estrutura de Dados e ArquivoProf.: Paulemir G. Campos Árvores Binárias: Construção e Percursos EDA - Prof. Paulemir Campos
Árvores Binárias: Definições • 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. EDA - Prof. Paulemir Campos
Árvores Binárias: Definições • Porsuavez, osnós à esquerda do nóraizconstituem a Sub-ÁrvoreEsquerda e osnós à direita do nóraizformam a Sub-ÁrvoreDireita; • Contudo, a raiz de umaárvorebinária e suasrespectivas sub-árvoresesquerda e direitadevemformar sub-conjuntosfinitos e disjuntos de nós. EDA - Prof. Paulemir Campos
Árvores Binárias: Exemplos Raiz da Árvore T Sub-Árvore Esquerda A A Sub-Árvore Direita B B C C D D E E F F G G H H I I EDA - Prof. Paulemir Campos
Árvores Binárias: Exemplos Raiz da Árvore T2 Raiz da Árvore T1 A A A A T1 T2 B B B B Filho Direito ou Sub-Árvore Direita de T2 Filho Esquerdo ou Sub-Árvore Esquerda de T1 Note que as árvores binárias T1 e T2 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
Árvores Binárias: Contra exemplos Exemplos de estruturas que não são árvores binárias. A Sub-Árvore Direita A Sub-Árvore Esquerda Sub-Árvore Esquerda B C B C D E F D E F G H I G Sub-Árvore Direita I EDA - Prof. Paulemir Campos
Árvores Binárias: Características • Possuem um ponteiro para o nó raiz da árvore (alocação dinâmica); • 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). EDA - Prof. Paulemir Campos
Árvores Binárias: Nós • O grau de um nó representa o seu número de filhos; • Ex.: Um nó de grau 2 indica que ele tem dois filhos. • Tipos de nós: • Folhas ou Externos – Não tem filhos. • Não-Folhas ou Internos – Tem ao menos um filho. EDA - Prof. Paulemir Campos
Árvores Binárias: Profundidade • A profundidade ou altura de uma árvore binária é determinada pelo seu maior nível. Nível 0 Nível 1 Nível 2 Nível 3 A B C D E F G H I A profundidade ou altura (h) da árvore binária acima é 3 (h=3). EDA - Prof. Paulemir Campos
Árvores Binárias: Tipos • Árvore Estritamente Binária: • Todo nó não-folha deve ter sub-árvores esquerda e direita não vazias. A B C D E F G EDA - Prof. Paulemir Campos
Árvores Binárias: Tipos • Árvore Binária Completa: • É uma árvore estritamente binária em que todas as folhas estão no nível máximo da árvore. A B C D E F G EDA - Prof. Paulemir Campos
Árvores Binárias: Tipos • Árvore Binária Quase Completa: • 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. A B C D E F G H I EDA - Prof. Paulemir Campos
Árvores Binárias Completas • Cálculo do Número de Nós: • O número de nós (n) é obtido com a fórmula abaixo, sendo fornecida a altura (h) da mesma. A B C D 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. EDA - Prof. Paulemir Campos
Árvores Binárias Completas • Cálculo da Altura: • Sabendo-se o número de nós (n), pode-se com a fórmula abaixo obter-se a sua altura (h). A B C D 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. EDA - Prof. Paulemir Campos
Árvores Binárias: Criação • Definindo o tipo da estrutura: definaestrutura no { caracter dado ponteiroestrutura no esquerdo, direito } tArvore EDA - Prof. Paulemir Campos
Árvores Binárias: Criação • Alocando memória dinamicamente ponteiro tArvoreraiz raiz = aloque(tArvore) EDA - Prof. Paulemir Campos
Árvores Binárias: Criação • Criando uma árvore binária: ponteiro tArvore CriaArvore(caracternovo){ ponteiro tArvoreno no = aloque(tArvore) no->dado = novo no->esquerdo = NULL no->direito = NULL retorneno } EDA - Prof. Paulemir Campos
Árvores Binárias: Insere à Esquerda Insere_Esquerda(ponteiro tArvore raiz,caracter atual, caracternovo){ ponteiro tArvore folha se (raiz!=NULL){ se (raiz->dado==atual){ /* Encontrou o nó procurado */ se (raiz->esquerdo==NULL){ folha = CriaArvore(novo) raiz->esquerdo = folha } senãoescreva(“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 procedimento. EDA - Prof. Paulemir Campos
Árvores Binárias: Percursos • Principais formas de se percorrer uma árvore binária não vazia: • Passeio Pré-Fixo • Passeio Central • Passeio Pós-Fixo EDA - Prof. Paulemir Campos
Árvores Binárias: Passeio Pré-Fixo (r-e-d) • Efetua-se o procedimento recursivo, enquanto possível: • Visita-se a raiz; • Percorre-se a sub-árvore esquerda em ordem pré-fixa; • Percorre-se a sub-árvore direita em ordem pré-fixa. EDA - Prof. Paulemir Campos
Árvores Binárias: Passeio Central (e-r-d) • Efetua-se o procedimento recursivo, enquanto possível: • Percorre-se a sub-árvore esquerda em ordem central; • Visita-se a raiz; • Percorre-se a sub-árvore direita em ordem central. EDA - Prof. Paulemir Campos
Árvores Binárias: Passeio Pós-Fixo (e-d-r) • Efetua-se o procedimentorecursivo, enquantopossível: • Percorre-se a sub-árvoreesquerdaemordempós-fixa; • Percorre-se a sub-árvoredireitaemordempós-fixa; • Visita-se a raiz. EDA - Prof. Paulemir Campos
Árvores Binárias: Exemplos de Passeios 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 H I EDA - Prof. Paulemir Campos
Referências • Szwarcfiter, J. L.; Markenzon, L. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: LTC, 2a. ed., 1994. • Veloso, P. et al. Estrutura de Dados. Rio de Janeiro: Editora Campus, 1996. EDA - Prof. Paulemir Campos