Programa em C - Fatorial
Seções 5.1 e 7.2 do livro "Estruturas de Dados Usando C" de Tenembaum, Langsam e Augenstein
Seções 5.4 e 5.5 do livro do Sedgewick
Dado um conjunto de vértices e arestas, um caminho é uma lista de vértices distintos na qual cada vértice na lista é conectado ao próximo por uma aresta.
Árvore (livre): Um conjunto de vértices (nodos) e arestas que satisfaz a seguinte condição: existe exatamente um caminho conectando qualquer par de nodos.
Se houver algum par de nodos para o qual existe mais de um caminho ou nenhum caminho temos um grafo.
Floresta: Um conjunto de árvores disjuntas.
Em computação:
Em geral, árvores referem-se a estruturas que possuem um nodo designado como raiz. Nestas árvores, cada nodo é a raiz de uma subárvore.
Desenho da árvore:
Raiz no topo:
- existe a noção de um nodo estar acima (mais próximo da raiz) ou abaixo dele (mais longe da raiz) - PAI: todo nodo, exceto a raiz tem um único pai, que é o nodo logo acima dele
- FILHOS: são os nodos logo abaixo de um determinado nodo
- IRMAO / AVO / ASCESTRAL/ DESCENDENTE
- FOLHAS ou nodos terminais: nodos que não possuem filhos
- nodos INTERNOS ou não terminais: que possuem filhos
- árvores ORDENADAS: árvores nas quais a ordem dos filhos é significativa
- árvores n-aria: árvores nas quais todos os nodos internos obrigatoriamente tem "n" filhos.
Ex: árvore binária.
Nestas árvores em geral é utilizado o conceito de "nodo externo" (que não possui filhos), referenciado por nodos internos que não tem o número especificado de filhos. Neste caso, FOLHA é um nodo interno cujos filhos são todos nodos externos.
Nível de um nó:
Nível da raiz = 0
Nível de outros nós = nível do pai + 1
Altura da árvore:
Nível máximo de um nodo (interno ou externo) da árvore.
Árvore Binária:
Um árvore binária é ou um nodo externo ou um nodo interno conectado a um par de árvores binárias, chamadas de subárvore esquerda e subárvore direita do nodo.
Representação: typedef struct