Árvores
Definição: É uma estrutura onde a relação entre seus elementos é de um para vários, também denominada estrutura hierárquica.
Uma árvore consiste em um conjunto de nós, tal que:
Notações gráficas para representar árvores:
Árvores podem ser usadas em diversos tipos de aplicações:
Para representar as expressões matemáticas A + B * 3 e (A + B) * 3 poderíamos usar as árvores A e B abaixo:
Cada elemento de uma árvore pode ser classificado como:
Classificação | Descrição |
---|---|
Pai | quando fica imediatamente acima de outro nó. |
Filho | quando fica imediatamente abaixo de outro nó. |
Irmãos | se os nós têm o mesmo pai. |
Raiz | se não tem nó pai (pode ter filhos) |
Folha ou Terminal | quando não possui filhos (pode ter pai) |
Dada a árvore acima, temos:
Ancestral: A é ancestral de B, C, F, D e H.
Descendente: B, C, F, D e H são descendentes de A. D e H são descendentes de F.
Arestas: são as ligações entre os nós.
Caminho: é uma seqüência de nós n1, n2, ... , ni tal que os nós sejam distintos e que exista uma aresta entre cada par de nós.
Comprimento de um caminho: número de arestas que um caminho contém. Ex: A - F - D tem comprimento 2.
Nível de um nó: comprimento de um caminho que vai da raiz até o nó, sendo o nível do no raiz igual a 0. Ex: A tem nivel 0; B nível 1 e D nivel 2.
Altura de uma árvore: é o nível mais alto de uma árvore. A árvore do exemplo tem altura 2.
Grau de um nó: quantidade de subárvores de um nó. Ex: a tem grau 3, F tem grau 2 e B tem grau 0.
Grau da árvore: quantidade máxima de subárvores para cada nó da árvore.
Subárvore: é uma árvore formada por um dos nós filhos e seus descendentes.
Árvore Ordenada: árvore onde a ordenação de suas subárvores é importante.
Na implementação seqüencial os nós de uma árvore são colocados seqüencialmente na memória. Há, basicamente, duas formas de implementação seqüencial de árvores. Uma para ser usada quando o grau da árvore é conhecido e outra quando é desconhecido.
Seja a árvore de exemplo abaixo:
A implementação com grau de árvore conhecido (no caso 3) seria:
A implementação com grau de árvore desconhecido seria:
Desvantagens da implementação com grau de árvore conhecido:
Desvantagens da implementação com grau de árvore desconhecido:
A implementação encadeada oferece:
Há basicamente 2 formas de implementação encadeada:
A implementação com grau de árvore conhecido é mais simples quando comparada à implementação com grau de árvore desconhecido.