Red de conocimiento informático - Conocimiento informático - ¿Cómo encontrar el recorrido de preorden de un árbol binario cuando se conocen el recorrido de preorden y el recorrido de postorden?

¿Cómo encontrar el recorrido de preorden de un árbol binario cuando se conocen el recorrido de preorden y el recorrido de postorden?

Escribe tu propia pila

Escribí la mitad y el resto para ti.

Anterior

Mi Pila & ltTreeNode * & gtStack

mientras(verdadero)

{

mientras ( lpCurNode)

{

if (lpfun!=null)

{

(this->*lpfun)( lpCurNode) ;

Pila. push(lpCurNode);

}

lpCurNode = lpCurNode->m_lpLeft

}

if (! pila. Pop(lpCurNode) ))

{

Rotura;

}

lpCurNode = lpCurNode-& gt; m _ lpRight

}

Medio

Mi Pila & ltTreeNode * & gt pila;

mientras(verdadero)

{

mientras(lpCurNode)

{

Pila. push(lpCurNode);

lpCurNode = lpCurNode->m_lpLeft

}

if (! stack. Pop(lpCurNode)) //Salir de Push

{

Romper;

}

if (lpfun!=null)

{

(this->*lpfun)(lpCurNode);// Salida, luego, si hay un valor a la derecha, presiónelo.

}

lpCurNode = lpCurNode->m_lpRight

}

Después...

Mi Pila & ltTreeNode * & gtStack;

TreeNode * lpFang = NULL

mientras(true)

{

mientras( lpCurNode)

{

pila. push(lpCurNode);

lpCurNode = lpCurNode->m_lpLeft

}

if (! stack. Pop(lpCurNode))

{

Descanso;

}

if(lpCurNode->m_lpRight == NULL | | lpCurNode->m_lpRight ==lpFang)

{

lpFang = lpCurNode

if (lpfun!=null)

{

(this->* lpfun)(lpCurNode);

}

lpCurNode = NULL

Continuar;

}

Otro

Pila. push(lpCurNode);

lpCurNode = lpCurNode->m_lpRight

}