¿El problema de reconstrucción del árbol de programación de la estructura de datos es el siguiente?
#Contiene "conio.h"
bool top order(int in order[], int Inlow, int Inhigh,
//Secuencia intermedia en//Orden, el rango de secuencia intermedia que se procesará en bajo y en alto
int PostOrder[], int Postlow, int Posthigh,
//Después. Secuencia de pedido anticipado, el último rango de secuencia baja y alta que se procesará
int PreOrder[], int Prelow, int Prehigh)
//PreOrder, Prelow y Prehigh se almacenan antes. rango de secuencia.
{
bool lflag = 0, rflag = 0;
if((Inhigh - Inlow)!= (Posthigh-Postlow)) //Secuencia intermedia La longitud de no es igual a la longitud de la siguiente secuencia.
Devuelve falso
if((in high-in low)= =-1)&&((post high-post low)=-1))// Árbol vacío
Devuelve verdadero
int root = PostOrder[Posthigh], pos//root es el último en la secuencia de publicaciones, pos representa la posición de la raíz en la secuencia intermedia.
for(pos = en baja; pos & lt= Enaltapos++){
if(en orden[pos]= = raíz)break;
}
if(pos & gt; Inhigh) devuelve false //Si la raíz no se encuentra en la secuencia intermedia,
PreOrder[Prelow]= root //Primero determine la raíz en; el prefacio.
lflag = ToPreOrder(InOrder, Inlow, pos - 1,
Pedido por correo, Pedido por correo, Pedido por correo + Pedido por correo - 1,
Preorder, Prelow + 1, Prelow +pos-in low); // Procesa recursivamente el subárbol de la izquierda
rflag = ToPreOrder(InOrder, pos + 1, Inhigh,
Post-position, post-position + post-position, Postposition - 1,
Preorder, Prelow + pos - Inlow + 1, Prehigh); // Procesa recursivamente el subárbol de la derecha
Devuelve lflag); & amp& amprflag // Devuelve el resultado del procesamiento.
}
void main()
{
int pre[20], in[20], post[20];
int n;
CIN & gt; & gtn; //Ingrese el número de nodos
cout & lt& ltendl
para (int I = 0;I<n;I++) //Ingrese la secuencia intermedia.
CIN>>in[i];
cout<<endl
for(I = 0;i<n;I++)/ /Ingresar secuencia posterior al pedido
CIN & gt;& gtpost[I];
cout & lt& ltendl
If (!ToPreOrder(in, 0, n - 1, post, 0, n - 1, pre, 0, n - 1))
cout & lt& lt"-1 \ n ";
Otro
{
for(I = 0;i<n-1;i++)
cout & lt& ltpre[I]& lt;& lt" ";
cout & lt& ltpre[n- 1];
}
cout & lt& ltendl
getch();
}