Respondendo a uma dúvida, vamos aprender nesta aula como descobrir e imprimir na tela o nível de um nó em uma Árvore Binária de Busca.
Playlist Árvore Binária de Busca
Playlist Árvore Balanceada AVL
Playlist Curso de Programação C
Será utilizado nesta aula o código que testamos na aula anterior, apenas acrescentando mais um procedimento de impressão.
A ideia para descobrir o nível de cada nó na árvore é bastante simples. A raiz da nossa árvore, por definição, está no nível zero, a partir daí, cada chamada feita para a subárvore esquerda ou direita basta incrementar uma unidade neste valor. Assim teremos em cada nó o seu nível correspondente.
Imagine que a árvore tenha apenas 3 nós, a raiz, um filho à esquerda e outro filho à direita. A raiz da árvore está no nível zero e cada um dos seus dois filhos está no nível um. Se cada um dos filhos também possuísse dois filhos, esses quatro filhos estariam no nível dois, e assim por diante.
Essa ideia pode ser facilmente implementada acrescentando mais um parâmetro ao procedimento de impressão. Agora, será enviado o ponteiro para a raiz e o nível em que a raiz se encontra. Dentro do procedimento, cada nova chamada recursiva irá incrementar 1 a este valor, afinal estamos descendo, nos aprofundando na árvore, avançando para o próximo nível.
Procedimento para imprimir o valor de cada nó juntamente com seu nível na Árvore Binária de Busca.
void imprimir_versao_2(NoArv *raiz, int nivel){ // 25 30 50 100 if(raiz){ imprimir_versao_2(raiz->esquerda, nivel + 1); printf("%d(%d) ", raiz->valor, nivel); imprimir_versao_2(raiz->direita, nivel + 1); } }