Arvore c++
Prof: Alyson
Árvores
• A forma mais natural para definirmos uma estrutura de árvore é usando recursividade.
Uma árvore é composta por um conjunto de nós. Existe um nó r, denominado raiz, que contém zero ou mais sub-árvores, cujas raízes são ligadas diretamente a r. Esses nós raízes das sub-árvores são ditos filhos do nó pai, r.
Árvores
•
Nesse exemplo, podemos notar que a árvore com raiz no nó a tem 3 subárvores, ou, equivalentemente, o nó a tem 3 filhos. Os nós b e g tem dois filhos cada um; os nós c e i tem um filho cada, e os nós d, e, h e j são folhas, e tem zero filhos.
Árvores
• Implementação em C
– A estrutura Arv, que representa o nó da árvore, é definida atribuindo-se o valor a ser atribuído, o endereço da estrutura filho e endereço da estrutura irmão. A função para criar uma folha deve alocar o nó e inicializar seus campos, atribuindo NULL para os campos filho e irmão, pois trata-se de um nó folha. Árvores
•
A função que insere uma nova sub-árvore como filha de um dado nó é muito simples. Como não vamos atribuir nenhum significado especial para a posição de um nó filho, a operação de inserção pode inserir a sub-árvore em qualquer posição.
Árvores
•
Para imprimir as informações associadas aos nós da árvore, utiliza-se recursividade .Note que neste caso não faz sentido a ordem simétrica, uma vez que o número de sub-árvores é variável. Para essa função, vamos optar por imprimir o conteúdo dos nós em pré-ordem:
Árvores
• A operação para buscar a ocorrência de uma dada informação na árvore é exemplificada abaixo:
Árvores
•
A última operação apresentada é a que libera a memória alocada pela árvore. O único cuidado que precisamos tomar na programação dessa função é a de liberar as sub-árvores antes de liberar o espaço associado a um nó
Árvores
Árvores
•
Reorganize a função main para que a exibição do código imprima os caracteres em ordem alfabética.
•
Crie uma