Red de conocimiento del abogados - Ley de patentes - Informe de diseño del curso "Estructura de datos": recorrido posterior al pedido (utilizando métodos recursivos y no recursivos)

Informe de diseño del curso "Estructura de datos": recorrido posterior al pedido (utilizando métodos recursivos y no recursivos)

Nuestro experimento de estructura de datos también tiene esta pregunta. ¿Quieres que te dé el informe de mi experimento como referencia?

Solo publicaré esta parte del código aquí.

Status PreOrderTraverse(BiTree T)

{

//Algoritmo recursivo para el recorrido de preorden del árbol binario T

if ( T)

{

printf("d ", T-gt; datos

if(T-gt; lchild) PreOrderTraverse(T-gt); ; lchild) ;

if(T-gt;rchild) PreOrderTraverse(T-gt;rchild);

devuelve FALSO;

}

else return OK;

}

Estado PreOrder(BiTree T)

{

//Pre-pedido no recursivo recorrido de orden del algoritmo T del árbol binario

while(!(T==NULLamp;amp;top==NULL))

{

if(T)

{

printf("d ", T-gt; datos

push(T); -gt; lniño;

}

else

{

T=(BiTree)pop(); p> T=T- gt;rchild;

}

}

}

Estado InOrderTraverse(BiTree T)

{

//Algoritmo recursivo para el recorrido en orden del árbol binario T

if (T)

{

if (T-gt; lchild) InOrderTraverse(T-gt;lchild);

printf("d ", T-gt;datos

if (T-gt); ;rchild) InOrderTraverse(T-gt; rchild);

devuelve FALSO;

}

en caso contrario devuelve OK;

}

Status InOrder( BiTree T)

{

//Algoritmo no recursivo para el recorrido en orden del árbol binario T

while (!(T==NULLamp;amp;top== NULL))

{

mientras(T)

{

push(T);

T =T-gt;lchild;

}

T=(BiTree)pop();

printf("d ",T-gt;datos) ;

T=T-gt;rchild;

}

}

Status PostOrderTraverse(BiTree T)

{

//Algoritmo recursivo para el recorrido posterior al orden del árbol binario T

if (T)

{

if (T- gt;lchild) PostOrderTraverse(T-gt;lchild

if (T-gt;rchild);

) PostOrderTraverse(T-gt; rchild);

printf("d ", T-gt; datos);

return FALSE; p>

else return OK;

}

Estado PostOrden(BiTree T)

{

//Post-orden recorrido Algoritmo recursivo para árbol binario T

unsigned sign; //Registra el número de veces que se extrae un nodo de la pila

while(!(T==NULLamp;amp;top ==NULL))

{

if(T)

{

push(T); //Al encontrar el nodo T por primera vez empuja su puntero

push(1); //Establece la bandera en 1

T=T-gt;

}

else

{

mientras(arriba)

{

sign=pop();

T=(BiTree)pop();

if(1==sign)//Indica caminar por el subárbol izquierdo de T

{

empujar( T);

empujar(2);

T=T-gt;

romper; }

else

{

if(2==sign)//Indica que los subárboles izquierdo y derecho de T han sido atravesados

{

printf("d ", T-gt; datos

T=NULL

}

}

}

}

}

}