Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
al rbol completo. Recuerda que cualquier nodo puede ser considerado como la raz de un rbol.
typedef struct _nodo {
int dato;
struct _nodo *derecho;
struct _nodo *izquierdo;
} tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Arbol;
/* (3-a-ii)
*/
else if(padre->izquierdo == actual) padre->izquierdo = NULL; /*
(3-a-iii) */
free(actual); /* (3-a-iv) */
actual = NULL;
return;
}
else { /* (3-b) */
/* Buscar nodo */
padre = actual; /* (3-b-i) */
if(actual->derecho) {
nodo = actual->derecho;
while(nodo->izquierdo) {
padre = nodo;
nodo = nodo->izquierdo;
}
}
else {
nodo = actual->izquierdo;
while(nodo->derecho) {
padre = nodo;
nodo = nodo->derecho;
}
}
/* Intercambio */
aux = actual->dato; /* (3-b-ii) */
actual->dato = nodo->dato;
nodo->dato = aux;
actual = nodo;
}
}
else {
padre = actual;
if(dat > actual->dato) actual = actual->derecho; /* (4) */
else if(dat < actual->dato) actual = actual->izquierdo; /* (5) */
}
}
}
Aplicar una funcin a cada elemento del rbol, segn los tres posibles recorridos
Todos los recorridos se aplican de forma recursiva. En este ejemplo crearemos tres funciones, una
por cada tipo de recorrido, que aplicarn una funcin al elemento de cada nodo.
La funcin a aplicar puede ser cualquiera que admita como parmetro un puntero a un entero, y que
no tenga valor de retorno.
InOrden
PreOrden
PostOrden