Programación de estructuras de datos para reconstrucción de árboles"¿El tema es el siguiente?
#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() p>
{
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 p >
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();
}