Inicio > C y C++ > victor46 > sobre arboles binarios

sobre arboles binarios

Experto:
Usuario:
Fecha: 06/07/2004
Valoración: (5,00 sobre 5) Categoría: C y C++
03/07/2004
intel1981, usuario preguntando en C y C++
Usuario
Me he encontrado con algoritmo de arboles que segun mi logica funciona
correctamente para el recorrido PREORDEN el cual muestro a continuacion:

{El algoritmo realiza el recorrido PREORDEN en un árbol binario. NODO es un dato
de tipo puntero}

{Se supone que existe una estructura como la siguiente:
struct xxyy
{
tipo_de_dato INFO
struct xxyy *izq;
struct xxyy *der;
}
}

1. Si NODO !=NULL
Visitar el NODO {Escribir NODO->INFO}

Regresar a PREORDEN con NODO->izq
{Llamada recursiva a PREORDEN con la rama izquierda del nodo en cuestion}

Regresar a PREORDEN con NODO->der
{Llamada recursiva a PREORDEN conla rama derecha del nodo en cuestion}

2. {Fin del condicional del paso 1}

Ahora bien mi duda es la siguiente:

A) En la linea: "Regresar a PREORDEN con NODO->izq", se supone que es una llamada recursiva y que tambien es necesario pasar el campo "izq", que es de tipo puntero:

¿Como tengo que declarar la funcion para que cuando yo realize la llamada recursiva pueda pasar un dato de tipo struct y que a su vez es un puntero?

En pocas palabras ¿Como seria en codigo del lenguaje Borland C 2.01 (no turbo C++), esta funcion del
recorrido PREORDEN de un arbol binario?

Espero que me puedas ayudar. Gracias.
05/07/2004
intel1981, experto respondiendo en C y C++
Experto
void InOrden(xxyy *nodo){
if(nodo->izq) InOrden(nodo->izq);
cout << nodo->info;
if(nodo->der) InOrden(nodo->der);
}

void PreOrden(xxyy *nodo){
cout << nodo->info;
if(nodo->izq) InOrden(nodo->izq);
if(nodo->der) InOrden(nodo->der);
}

void PosOrden(xxyy *nodo){
if(nodo->izq) InOrden(nodo->izq);
if(nodo->der) InOrden(nodo->der);
cout << nodo->info;
}


al llamar a las funciones haz lo siguiente;

PreOrden(raiz);
InOrden(raiz);
PosOrden(raiz);

raiz es un dato tipo xxyy que tiene la raiz del arbol;
06/07/2004
intel1981, usuario preguntando en C y C++
Usuario
Gracias por la ayuda, Es bueno saber que existen personas como Tú que siempre estan dispuestas a ayudarnos. Afectuosamente Weyler.
Más opciones
Enlaces patrocinados