¿Cómo encontrar el recorrido de preorden de un árbol binario cuando se conocen el recorrido de preorden y el recorrido de postorden?
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 p>
{
Romper;
}
if (lpfun!=null)
{ p>
(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
}