¿El problema de reconstrucción del árbol de programación de la estructura de datos es el siguiente?

#Contiene "iostream.h"

#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();

}