Travessia em Nível
Lição 15 de 16 do curso Árvore AVL - Série de Estruturas de Dados #10 da Coddy.
Uma travessia em nível (também chamada de busca em largura) visita a árvore linha por linha: primeiro a raiz, depois ambos os seus filhos, depois todos os quatro netos, e assim por diante, em vez de mergulhar em profundidade como fazem as travessias em-ordem ou pré-ordem.
A maneira padrão de fazer isso é usando uma fila: comece com a raiz dentro dela, depois remova repetidamente o nó da frente, registre seu valor e insira seus filhos (o esquerdo antes do direito) no final da fila.
Desafio
FácilEscreva uma função levelOrder(tree) que retorna uma lista de cada valor na árvore, nível por nível, da esquerda para a direita em cada nível.
Experimente você mesmo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "avltree.h"
#include "solution.h"
int main(void) {
AVLTree* tree = AVLTree_create();
char line1[4096];
fgets(line1, sizeof(line1), stdin);
char* tok = strtok(line1, " \n");
while (tok != NULL) {
AVLTree_insert(tree, atoi(tok));
tok = strtok(NULL, " \n");
}
int result[1024];
int resultCount = levelOrder(tree, result);
for (int i = 0; i < resultCount; i++) {
if (i > 0) printf(" ");
printf("%d", result[i]);
}
printf("\n");
return 0;
}
Todas as lições de Árvore AVL - Série de Estruturas de Dados #10
3Desafios de Prática
K-ésimo Menor ElementoSoma de IntervaloMenor Ancestral ComumTravessia em NívelSucessor de um Valor