[C] Funciones para arboles binarios

Iniciado por gasparenaide, 19 Marzo 2013, 01:47 AM

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

gasparenaide

Hola como estan soy nuevo en el foro y tengo muchas dudas acerca de un varios programas que estoy generando en c y estoy teniendo problemas con las funciones para arboles,ocupo linux y estoy trabajando con geany y gcc y bueno
despues de mi presentacion estoy tratando de resolver un problema con respecto a arboles binarios rojo y negro y es
que no se bien como generar una figura  con SVG

Tengo una firma de funcion de mi programa asi:

char*   arbol_binario_genera_svg (struct arbol_binario*a,func_a_cadena f);

La función, como su nombre indica, genera un documento de Scalable
Vector Graphics (SVG), con una representación gráfica del árbol.

y lo genero con el siguiente codigo:

<?xml version="1.0" encoding="UTF-8" ?>
<svg width="200" height="200">
  <g>
    <line x1="100" y1="40" x2="40" y2="160" stroke="blue" stroke-width="3" />
    <line x1="100" y1="40" x2="160" y2="160" stroke="blue" stroke-width="3" />
    <circle cx="100" cy="40" r="20" stroke="red" stroke-width="3" fill="red" />
    <circle cx="40" cy="160" r="20" stroke="black" stroke-width="3"
fill="black" />
    <circle cx="160" cy="160" r="20" stroke="black" stroke-width="3"
fill="black" />
    <text fill="white" font-family="sans-serif" font-size="20" x="100" y="45"
             text-anchor="middle">1</text>
    <text fill="white" font-family="sans-serif" font-size="20" x="40" y="165"
             text-anchor="middle">2</text>
    <text fill="white" font-family="sans-serif" font-size="20" x="160" y="165"
             text-anchor="middle">3</text>
  </g>
</svg>

Esto  debe generar un documento svg que represente al árbol.
La función sólo recibe el árbol binario (que puede ser rojo-negro o un
árbol binario normal), y una función de tipo func_a_cadena para
convertir a cadenas los elementos del mismo. La función regresa una
cadena que contiene el XML del SVG;

Como puedo hacer la funcion para que al meterla en el codigo svg me
genera el arbol binario rojo y negro?

yo ya tengo todos los codigos en C con la estructura de funcion (struct arbol_binario* ,void*e,func_compara f)  ,en general esta definicion de funcion varia (a
veces no va el func_compara) dentro de las siguientes operaciones:

Para arbol binario
-agregar por izquierda
-agregar por derecha
-busca
-elimina
-raiz
-anterior
-in order
-post order
-pre order
-numero de elementos

Aqui me falta generar  recorrido por anchura(bfs) con firma:
void  arbol_binario(struct arbol_binario* a,func_procesa f,const void* d);

liberar memoria de arbol y sus elementos(liberar todo)
void  arbol_binario_libera (struct arbol_binario* a);
y liberar memoria de arbol pero no de sus elementos
void  arbol_binario (struct arbol_binario* a);

La parte de func_procesa se genera a traves de un archivo que define aparte con su biblioteca auxiliar.h y auxiliar.c

y tambien tengo ya para arbol binario ordenado
-agregar
-buscar
-gira izquierda
-gira derecha

me faltaria una funcion que me diga si el arbol ya esta ordenado

y para arbol binario rojo negro

-elimina
-busca

Todas esas funciones ya las tengo con la firma de funcion que habia
comentado, pero realmente svg no le hayo es decir ni idea y no hay
nada en internet que me diga como se grafica

Podria alguien ayudarme?  si necesitan las funciones para que vean como voy pidanlas ,no las pongo aqui en este post por que es mucho codigo pero si quieren lo pongo los .h y .c aqui o como archivo adjunto requiero ayuda mi cabeza ya no da pa tanto :(

si no me explique en algo diganme y pues me explico mejor

gracias de antemano