Red de conocimiento informático - Aprendizaje de código fuente - Programación de estructuras de datos para reconstrucción de árboles"¿El tema es el siguiente?

Programación de estructuras de datos para reconstrucción de árboles"¿El tema es el siguiente?

#include "iostream.h"

#include "conio.h"

bool ToPreOrder(int InOrder[], int Inlow, int Inhigh,

/ /Rango de secuencia intermedia de InOrder, Inlow, Inhigh que se procesará en el rango intermedio

int PostOrder[], int Postlow, int Posthigh,

//Secuencia posterior al pedido,

//PreOrder guarda la secuencia de preorden, Prelow y Prehigh guardan el rango de preorden

{

bool lflag = 0, rflag = 0;

If ((Inhigh - Inlow) != (Posthigh - Postlow))//La longitud de la secuencia intermedia no es igual a la longitud de la siguiente secuencia

Devuelve falso;

if (( (Inhigh - Inlow) == -1) amp; amp; ((Posthigh - Postlow) == -1)) // árbol vacío

devuelve verdadero

int root = PostOrder[Posthigh], pos; //root es el último en el orden post-alto, pos representa la posición de la raíz en el orden medio

for(pos = Inlow; pos lt; = Enalto; pos){

if(InOrder[pos] == root) break

}

if(pos gt; Enalto) devuelve falso; /si no se encuentra ninguna raíz en el orden medio

PreOrder[Prelow] = root; //primero determine la raíz en el pedido previo

lflag = ToPreOrder(InOrder, Inlow, pos - 1,

PostOrder, Postlow, Postlow pos - Inlow - 1,

PreOrder, Prelow 1, Prelow pos - Inlow // Procesa recursivamente el subárbol izquierdo

rflag = ToPreOrder(InOrder, pos 1, Inhigh,

PostOrder, Postlow pos - Inlow, Posthigh - 1,

PreOrder, Prelow pos - Inlow 1, Prehigh); /procesa recursivamente el subárbol derecho

return lflag amp; rflag //devuelve el resultado del proceso

}

void main()

{

int pre[20], en[20], post[20];

int n

cin gt; ;

//Ingrese el número de nodos

cout lt; endl;

for(int i = 0; i lt; n; i) //Ingrese la secuencia mediana

cin gt; in[i];

cout lt;

for(i = 0; i lt; n; i) //entrada de secuencia de publicación

cin gt; post[i];

cout lt; endl

if(!ToPreOrder(in, 0, n - 1) , publicación, 0, cin gt; publicación[i]);

if(!ToPreOrder(in, 0, n - 1, publicación, 0, publicación, 0, publicación, 0)) n - 1 , post, 0, n - 1, pre, 0, n - 1))

cout lt;lt; "-1\n";

else

{

for(i = 0; i lt; n - 1; i )

cout lt; pre[i] lt; p >

cout lt; pre[n - 1];

}

cout lt;

getch();

}