ÈUYRUHV 'HILQLomR Uma árvore 7 é um conjunto finito contendo um ou mais nós (vértices), onde existe um nó especial denominado UDL] e os demais estão organizados em 1 conjuntos disjuntos (T 1, T 2,..., T N ) denominados VXEiUYRUHV da raiz. Uma árvore pode ser definida como um grafo acíclico conexo onde um dos vértices chamado UDL]GDiUYRUH é diferenciado dos demais. 7HUPLQRORJLD C D E ƒ é o pai de, C e D ƒ, C e D são filhos de ƒ, C e D são irmãos ƒ é um ancestral de G ƒ G é um descendente de ƒ, D, F e G são nós folhas ƒ, C e E são nós internos ƒo grau do nó é 3 ƒo comprimento do caminho entre C e G é 2 ƒo nível de é 1 e o de G é 4 ƒ altura da árvore é 4 F G Árvores Ordenadas ƒ árvore é chamada de RUGHQDGD se a ordem entre os filhos de cada nó é considerada. C D D C
Árvores inárias Árvores cujo grau. Existe um nó UDL] e duas subárvores binárias denominadas subárvore GLUHLWD e subárvore HVTXHUGD ƒse uma árvore binária tem Q!0nós, então ela possui Q+1 subárvores vazias. Tipos Especiais de Árvores inárias ƒuma árvore binária é HVWULWDPHQWHELQiULD sse todos os seus nós têm 0 ou 2 filhos, ou seja, todo nó que não é folha tem as duas subárvores. ƒuma iuyruhelqiuldfrpsohwd possui profundidade d, é estritamente binária e todas as folhas estão no nível d; ƒuma iuyruhelqiuldtxdvhfrpsohwd é aquela na qual cada nó folha está no nível d (sua profundidade) ou d-1; e para cada nó k com um descendente direito no nível d, todos os descendentes esquerdos de k que forem folhas estão também no nível d. ltura de Árvores inárias ƒo processo de busca em árvores é normalmente feito a partir da raiz na direção de alguma de suas folhas. ƒnaturalmente, são de especial interesse as árvores com a menor altura possível. ƒse uma árvore 7 com Q!0 nós é completa, então ela tem altura mínima. Para ver isso observe que mesmo que uma árvore mínima não seja completa é possível torná-la completa movendo folhas para níveis mais altos. ƒ altura mínima de uma árvore binária com Q> 0 nós é K 1 + log 2 Q Implementando Árvores inárias com rrays ƒdado um nó armazenado no índice L, é possível computar o índice do nó filho esquerdo de L:2 L do nó filho direito de L: 2 L + 1 do nó pai de L: Ldiv 2 ƒpara armazenar uma árvore de altura K precisamos de um array de 2 1 (número de nós de uma árvore completa de altura K)
b a c 1 2 3 4 5 6 7 8 9 10 11 a b c d e f g h i j k 1 2 3 4 QtYHLV d e f g h i j k Implementando Árvores inárias com Ponteiros ƒvia-de-regra, árvores binárias são implementadas com ponteiros: Cada nó ; contém 3 campos: Dado: valor armazenado no nó *(VT:Ponteiro p/ árvore esquerda *'LU:Ponteiro p/ árvore direita Esq Val Dir Uma árvore é representada por um ponteiro para seu nó raiz (*Raiz) 7 a b c d e f Percurso de Árvores inárias ƒexistem essencialmente 3 ordens naturais de se percorrer os nós de uma árvore Pré-ordem: raiz, esquerda, direita Pós-ordem: esquerda, direita, raiz In-ordem: esquerda, raiz, direita
Percurso de Árvores M-árias Caminhamento em Largura Caminhamento em Profundidade Árvores inárias de usca ƒnuma árvore binária de busca, todos os nós na subárvore à esquerda de um nó contendo uma chave [são menores que [e todos os nós da subárvore à direita são maiores que [ [ < [ > [ 2SHUDo}HV Inserção de uma nova chave Remoção de uma chave Consulta a uma chave ƒ inserção ou a remoção de Qchaves toma tempo2(q 2 ) no pior caso ou 2(Qlog Q) se pudermos garantir que árvore tem altura logarítmica. Podemos garantir uma árvore de altura ótima para uma coleção de chaves se toda vez que temos de escolher uma chave para inserir, optamos pela mediana. Percebemos que a altura da árvore final depende da ordem de inserção. Árvores alanceadas Não podemos assegurar que árvores binárias de busca construídas segundo qualquer ordem de inserção sempre têm altura logarítmica. Sabemos que árvores completas garantem buscas utilizando não mais que log2 Q 1 comparações. Árvores VL delson Velsky e Landis introduziram em 1962 uma estrutura de árvore binária que é equilibrada com respeito às alturas das subárvores. Devido a natureza equilibrada das árvores VL, as recuperações, inserções e deleções podem ser efetuadas num tempo da ordem de log N onde N é o nº de nós.
'HILQLomR: a árvore vazia é de altura equilibrada. Seja T uma árvore binária de busca não vazia com TE e TD como subárvores esquerda e direita, então T terá altura equilibrada se: i) TE e TD forem equilibradas na altura ii) he - hd 1 onde he e hd são as alturas de TE e TD, respectivamente. 'HILQLomR: uma árvore VL é uma árvore binária de busca que é vazia ou cuja diferença de pesos entre as profundidades das subárvores esquerda e direita é, no máximo, igual a 1, e as subárvores direita e esquerda, por sua vez, também são árvores VL. Uma árvore VL sempre tem um certo grau de balanço, mas não precisa estar perfeitamente balanceada. Para restaurar o balanço após uma inserção ou remoção temos que reorganizar a árvore, através de operações de rotação. ([HPSORVGHÈUYRUHV$9/ ([HPSORVGHÈUYRUHV1mR$9/
Para manter essa invariante depois de alguma inserção ou remoção que desequilibre a árvore, utiliza-se operações de custo 2(1) chamadas URWDo}HV $OJRULWPR5RWDomR'LUHLWD5' p = Raiz; q = p->esq; h = q->dir; q->dir = p p->esq = h Raiz = q; Observação: considere Raiz como o ancestral mais próximo do nó inserido e que está desequilibrado. $OJRULWPR5RWDomR(VTXHUGD5( p = Raiz; q = p->dir; h = q->esq; q->esq = p p->dir = h Raiz = q; O processo de reequilibrar é conduzido essencialmente usando 4 tipos de rotação: EE, DD, ED e DE. Essas rotações são caracterizadas pelo ancestral mais próximo, $, do nó inserido, <, cujo fator de equilíbrio passa a ser +2 ou -2. ssim sendo, temos: ((: novo nó Y inserido na subárvore esquerda da subárvore esquerda de. (': novo nó Y inserido na subárvore direita da subárvore esquerda de. '': novo nó Y inserido na subárvore direita da subárvore direita de. '(: novo nó Y inserido na subárvore esquerda da subárvore direita de. ([HUFtFLRV 1) Construa uma árvore VL inserindo, passo a passo, os nós 20, 30, 40, 35, 50, 31, 16, 32, 33. Registre na prova cada passo, o tipo de rotação utilizada se necessário, bem como o cálculo do balanceamento. 2) Dados os caminhamentos: Pré-ordem: DGCEHIF In-ordem: DGHEICF Pós-ordem: GDHIEFC Construa a árvore binária correspondente. (2.0)