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.
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); } }