Red de conocimiento informático - Aprendizaje de código fuente - ¿El problema de reconstrucción del árbol de programación de la estructura de datos es el siguiente?

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

}