Foros del Web » Programación para mayores de 30 ;) » Programación General »

programación árboles c#

Estas en el tema de programación árboles c# en el foro de Programación General en Foros del Web. hola que tal como estan tengo un problema en programación de arboles en c# no conozco fuentes de informacion sobre el tema pe pueden ayudar ...
  #1 (permalink)  
Antiguo 14/11/2008, 18:19
Avatar de marantonio  
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
programación árboles c#

hola que tal como estan tengo un problema en programación de arboles en c# no conozco fuentes de informacion sobre el tema pe pueden ayudar recomendandome algunas.
  #2 (permalink)  
Antiguo 21/11/2008, 16:17
rdm
 
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires, Argentina
Mensajes: 57
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: programación árboles c#

Hola, si te refieres a programar un TreeView con c#, te copio un pequeño código que te crea un arbol de un nivel.

foreach (DataRow _item in _tbAux.Rows)
{
if (_item["TipNodo"].ToString() == "NP")
{
treeArticulos.Nodes.Add(_item["DescripItem"].ToString());
}
else if (_item["TipNodo"].ToString() == "NH")
{
treeArticulos.Nodes[int.Parse(_item["IdNiv1"].ToString())].Nodes.Add(_item["DescripItem"].ToString());
}
}
este código se basa en una tabla en donde están los items del arbol, el campo llamado TipNodo define si ese registro es un Nodo Padre o un Nodo Hijo, según este código, si el campo tiene NP (nodo padre), agregas al treeview un nodo padre, si el campo tiene NH, tienes que agregar ese registro como un nodo hijo, ahora bien, ¿como determinas a cual nodo padre le corresponden los nodos hijos?, el treeview en c# es bastante mañoso para armarlo, en la última línea tienes tree.nodes[np].nodes.add(nnnn...), con lo cual te quedaría la siguiente estructura:

NodoPadre
----NodoHijo1
----NodoHijo2
----etc.etc.

si tuvieras que agregar un nuevo nivel, por ejemplo en NodoHijo2, para lograr la siguiente estructura:

NodoPadre
----NodoHijo1
----NodoHijo2
--------Uno
--------Dos
--------Tres, etc, etc,
----etc.etc.

tendrias que ingeniartelas para construir la siguiente línea de código:

tree.nodes[np_1].nodes[np_2].nodes.add(nnnn...) y así sucesivamente, la cantidad de nodes[].nodes[].nodes[], etc que vayas encadenando definirá tu estructura de arbol.

Como te dije al principio, yo uso una tabla que contiene prefabricada la estructura del arbol a los efectos de no lidiar mas de lo necesario con el encadenamiento de los nodes[], te copio un par de ejemplos de dicha tabla:

"CAÑOS","NP",0
"Pulidos","NH",0
"Negros","NH",0
"HIERROS","NP",1
"Planchuela","NH",1
"Angulo","NH",1
"Hierros Te","NH",1

El campo numérico, es el Key del Nodo Padre, por lo tanto, cuando se recorre la tabla, mediante el if, determinas si se trata de un nodo padre o de uno hijo, y en consecuencia, basado en el campo key, ya sabes a que nodo enganchar el hijo.

Como veras esta solución te crea un arbol de un solo nivel de padre hijo, pero si modificas un poco la tabla y teniendo en cuenta la mecánica de encadenamiento de los Nodes[], deberías poder armar uno mas sofisticado.

Espero te sirva. Saludos.
  #3 (permalink)  
Antiguo 23/03/2011, 12:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: programación árboles c#

Como tratar los nodos con base de datos
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 21:26.