Ayuda Impresion de Arbol Binario

Iniciado por negux, 25 Noviembre 2010, 02:31 AM

0 Miembros y 1 Visitante están viendo este tema.

negux

Pudieran ayudarme con la impresion de un arbol binario ? la cosa es que ya lo imprime mas o menos asi

13
11
10
9

8
5
3

pero quisiera saber como se puede imprimir con lineas y circulitos :S no tengo idea de como :huh:


#include<stdio.h>
#include<stdlib.h>



struct nodo{
    int info;
    struct nodo *izq;
    struct nodo *der;
    int factor;
};
typedef struct nodo tarbin;
typedef tarbin *arbin;

//Prototipos de Funciones
int inserta_nodo_arbol(arbin *a, int x);
arbin arbizq(arbin a);
arbin arbder(arbin a);
void ini_arb(arbin *a);
int arbol_vacio(arbin a);
void imprimir_arbol(arbin a,int n);
int main()
{
    arbin a;
    int num,i;
    ini_arb(&a);

    printf("Inserta 7 Numeros\n");
    for(i=0;i<7;i++)
    {
        printf("Dame num %d\n",i+1);
        scanf("%d",&num);
        inserta_nodo_arbol(&a,num);
    }
    imprimir_arbol(a,0);






    return 0;
}

//FUNCIONES

void ini_arb(arbin *a)
{
    *a=NULL;
}
int arbol_vacio(arbin a)
{
    return a==NULL;
}
int inserta_nodo_arbol(arbin *a, int x)
{
    if(arbol_vacio(*a))
    {
        *a=(arbin)malloc(sizeof(tarbin));
         if(*a==NULL)
            return 1;
            (*a)->info=x;
            (*a)->der=(*a)->izq=NULL;
        return 0;
    }
    if(x<(*a)->info) return inserta_nodo_arbol(&(*a)->izq,x);
    if(x>(*a)->info) return inserta_nodo_arbol(&(*a)->der,x);
    return 2;

}
arbin arbizq(arbin a)
{
    return a->izq;
}
arbin arbder(arbin a)
{
    return a->der;
}
void imprimir_arbol(arbin a,int n)
{
    int i;
    if(a!=NULL)
    {
        imprimir_arbol(a->der,n+1);
        for(i=1;i<=n;i++)
           printf("            ");
        printf("(%d) \n\n",a->info);
        imprimir_arbol(a->izq,n+1);

    }   
}



Beakman

Citarpero quisiera saber como se puede imprimir con lineas y circulitos :S no tengo idea de como

Lineas y ciruclitos ?

Como tienen que quedar los 7 números?

Akai

Para lo que quieres hacer, m parece que vas a tener que recurrir a librerías gráficas (SDL etc...)