Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Escreva 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