Outra estrutura extensivamente utilizada na programação de sistemas é a estrutura de árvore, que esquematicamente pode ser visualizada como uma extensão de uma lista ligada na qual um nó pode ter mais de um sucessor (Figura 2.5). A representação esquemática de árvores usualmente coloca a raiz no topo, com a árvore crescendo para baixo.
Em uma definição mais formal, uma árvore é uma estrutura que contém um conjunto finito de um ou mais nós, sendo que um dos nós é especialmente designado como o nó raiz e os demais nós são particionados em 0 ou mais conjuntos disjuntos onde cada um desses conjuntos é em si uma árvore, que recebe o nome de sub-árvore.
É possível descrever a árvore representada na Figura 2.5 através da aplicação dessa definição como se segue. A árvore tem o nó raiz e as sub-árvores , e . A sub-árvore tem o nó raiz e não contém sub-árvores; sub-árvore tem o nó raiz e sub-árvores e ; e a sub-árvore tem o nó raiz e sub-árvore . No próximo nível, as sub-árvores , e têm respectivamente os nós raízes , e e não têm sub-árvores.
O número de sub-árvores de um nó é o grau do nó. No exemplo, o nó tem grau 3; , 2; e , 0. O grau da árvore é o maior valor de grau de nó entre todos os nós da árvore; no exemplo, a árvore tem grau 3. Um nó que não tem sub-árvores, ou seja, cujo grau é 0, é normalmente denominado nó folha da árvore. No exemplo, a árvore tem folhas , , e . Os nós raízes das sub-árvores de um nó são usualmente chamados de nós filhos desse nó, que recebe também o nome de nó pai daqueles nós. Em uma estrutura de árvore, cada nó tem apenas um nó pai.
Um tipo especial de árvore é a árvore binária. Uma árvore binária tem um nó raiz e no máximo duas sub-árvores, uma sub-árvore esquerda e uma sub-árvore direita. Em decorrência dessa definição, o grau de uma árvore binária é limitado a dois. A Figura 2.6 ilustra alguns exemplos de árvores binárias.
Observe na figura que e são árvores binárias distintas pois, ao contrário da definição genérica de árvores, há diferença de tratamento para a árvore binária entre a sub-árvore direita e a sub-árvore esquerda. Outra diferença de definição para árvores binárias é que elas podem eventualmente ser vazias, algo que a definição de árvore genérica não permite. é uma árvore binária degradada, enquanto é uma árvore binária completa e balanceada (com sub-árvores de igual tamanho).
Uma das principais aplicações de árvores binárias é a manutenção de estruturas nas quais a ordem é importante. Para manter a ordem dos nós de uma árvore binária, três estratégias podem ser utilizadas:
Aplicando essas estratégias à árvore (Figura 2.6), com pré-ordem a seqüência de nós da árvore seria A, B, D, E, C, F, G; com intra-ordem, D, B, E, A, F, C, G; e com a pós-ordem, D, E, B, F, G, C, A.