C/Visual C - Arbol general

 
Vista:

Arbol general

Publicado por Esteban (6 intervenciones) el 10/06/2005 23:09:32
Alguien me podria escribir el codigo de como seria la estructura de una arbol general?
Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Arbol general

Publicado por kanan (1 intervención) el 11/06/2005 00:32:26
Puedes checar la estructura de std::tree
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arbol general

Publicado por fernando.gomez (1603 intervenciones) el 11/06/2005 00:40:31
Un árbol es un contenedor que tiene contenedores. Así, por ejemplo, tendríamos un nodo que contiene nodos del mismo tipo.

class CNodo
{
public:
std::vector<CNodo> hijos;
//constructor copia, asignación, etc...
};

Por ejemplo, con el siguiente código creo un árbol con cinco hijos:

CNodo arbol;
for (int i=0; i < 5; i++) {
arbol.hijos.push_back(CNodo());
}

// agregar dos hijos a cada nodo
vector<CNodo>::iterator iterIndex;
for (iterIndex = arbol.begin(); iterIndex != arbol.end(); iterIndex++) {
iterIndex->hijos.push_back(CNodo());
iterIndex->hijos.push_back(CNodo());
}

Al final del programa, tienes un árbol con cuyo primer nivel es de cinco hijos, y cada uno de estos tiene, a su vez, dos hijos.

Este es un ejemplo sencillo. Evidentemente no usa encapsulamiento ni programación genérica. Es más, ni siquiera guarda algún tipo de dato. Pero recoje bien la idea.

En este ejemplo, el contenedor lo implementé usando std:.vector, pero puedes emplear otro tipo de contenedores, como std::list, o alguno definido por tí.

Como alguien mencionó por ahí, también puedes emplear std::tree para ahorrarte el trabajo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arbol general

Publicado por Esteban (6 intervenciones) el 11/06/2005 05:35:36
Bueno, muchas gracias por el dato, pero la idea del ejercicio es mas bien hacerlo con un struct del mismo modo que se hace un lista, por ej. :
struct nodoLista
{
char * dato;
nodoLista * siguiente;
};

Disculpen la molestia y si alguien me lo supiera contestar se lo agradeceria.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Arbol general

Publicado por Alvaro (7 intervenciones) el 28/06/2005 08:09:34
en un archivo aparte escribes esto... Si no quieres un archivo aparte entonces sólo escribes lo que está entre el define y el endif en el archivo donde tienes la clase...

#if !defined( _NODO_H_)
#define _NODO_H_

struct Node
{
int valor;
Node *hermano;
Node *hijo;
}

typedef Node * Nodo;

#endif

En la clase iria así...

class ArbolGeneral
{
private:
Nodo raiz;
public:
.
.
.
};

Espero te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar