Dado un árbol binario, la secuencia transversal de preorden es ABECDFGHIJ y la secuencia transversal de orden es EBCDAFHIGJ.
#include lt;stdlib.hgt;
#include lt;stdio.hgt;
#include lt;string.hgt;
tipo de carácter typedef;
niveles int estáticos = 0;
estructura de nodo
{
tipo de clave;
nodo * izquierda;
nodo * derecha;
};
nodo * diversión(escriba arrLevel[], escriba arrMid[], int length , int beg, int end)
{
if(beg gt; end)return NULL;
int lb = beg, le, rb, re = fin;
bool flag = false;
nodo * raíz = (nodo*)malloc(sizeof(nodo)); )
{
root-gt; clave = arrMid[beg];
root-gt; izquierda = root-gt = NULL; p>
p>
return raíz
}
for(niveles = 0; niveles lt; longitud; niveles)
{
for(int i = beg; i lt; end; i )
{
if(arrMid[i] == arrLevel[niveles]) p>
{
le = i -1;
rb = i 1;
bandera = verdadero
raíz; -gt; clave = arrLevel[niveles];
break; //buscar
}
}
if(bandera)break ;
}
root-gt; izquierda = fun(arrLevel, arrMid, longitud, lb, le
root-gt; arrLevel, arrMid, length, rb, re);
return root;
}
/*-----Recorrido posterior al pedido--- ---*/
void post_traverse(
nodo *r)
{
if(r){
post_traverse(r-gt;left
post_traverse(r); -gt;derecha);
printf("c ",r-gt;clave
}
printf("\n");
}
/*-----Destrucción posterior al pedido------*/
void post_destroy(node* amp; r)
{
if(r) {
post_destroy(r-gt; izquierda);
post_destroy(r-gt; derecha)
libre(r);
r = 0;
}
}
int principal( )
{
const int MAX = 20;
tipo arrLevel[] = "ABECDFGHIJ"
tipo arrMid[] = "EBCDAFHIGJ";
int longitud = strlen(arrLevel);
nodo * raíz = fun(arrLevel, arrMid, longitud, 0, longitud-1); p> printf("Árbol binario de salida transversal posterior al pedido: ");
post_traverse(root);
post_destroy(root); ;
devuelve 0;
}