Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funciones para generar arboles binarios

Estas en el tema de Funciones para generar arboles binarios en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/03/2013, 19:14
 
Fecha de Ingreso: marzo-2013
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Funciones para generar arboles binarios

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

Etiquetas: arboles, cadenas, funcion, funciones, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:03.