aula 308

Como imprimir uma Árvore Binária Balanceada – Árvore AVL?

Vamos aprender nesta aula uma forma muito interessante para imprimir uma árvore balanceada de forma recursiva a fim de verificar se ela realmente está balanceada.

Imprimir uma árvore binária em linhas como fizemos até o momento torna difícil verificar se realmente a árvore está balanceada. Assim, vamos apresentar nesta aula um procedimento recursivo que irá imprimir a árvore de forma inclinada, como apresentado na figura a seguir.

imprimir árvore balanceada
Representação de uma Árvore AVL inclinada para a esquerda.

Observando a figura percebemos que o primeiro nó a ser impresso é o nó mais a direita na árvore. Então, vamos iniciar nosso procedimento recursivo caminhando sempre para a direita até encontrar um ponteiro nulo. Em seguida, vamos imprimir o conteúdo do nó e caminhar na subárvore esquerda. Para conseguir a distância da margem esquerda do terminal até o conteúdo impresso, podemos utilizar o nível do nó na árvore. Cada nível será uma tabulação \t. Esta ideia é implementada no trecho de código a seguir.

/*
     Procedimento para imprimir uma árvore AVL
*/
void imprimir(No *raiz, int nivel){
    int i;
    if(raiz){
        imprimir(raiz->direito, nivel + 1);
        printf("\n\n");

        for(i = 0; i < nivel; i++)
            printf("\t");

        printf("%d", raiz->valor);
        imprimir(raiz->esquerdo, nivel + 1);
    }
}

Deixe um comentário

dezenove − sete =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.