Colección de citas famosas - Frases elegantes - Un programa que atraviesa y genera nodos hoja en orden (un programa en lenguaje C que se puede ejecutar en C++)

Un programa que atraviesa y genera nodos hoja en orden (un programa en lenguaje C que se puede ejecutar en C++)

#include

#include

typedef?struct?bitnode{

int? fecha;

estructura?bitnode?*?lchild,?*rchild;

}bitnode,*bitree;

int?j=0;

//Descripción de la función

bitree?*createbitree(bitree?*T);

int?Qtraversebitree(bitree?T);

int ?Ztraversebitree(bitree?T);

int?Htraversebitree(bitree?T);

int?Ftraversebitree(bitree?T);

/** *******************Función principal****************************** */

main()

{

bitree?Tree,*T?;?int?k?

{

printf("\n╔------------------------------------- ---- ------╗");?//Mostrar un menú simple

printf("\n┆?Creación de pedidos anticipados----1?Recorrido de pedidos anticipados- -----2 ┆");

printf("\n┆?Recorrido en orden----3?Recorrido posterior al pedido------4┆");

printf( "\n┆?Número de hojas---?5?Salir del programa------6┆");

printf("\n╚-- -------- -------------------------------------╝\n") ;?

printf("Ingrese el número de secuencia de la operación a realizar:?");

scanf("%d",&k);//Aceptar la elección del usuario

switch(k) //Aceptar funciones de usuario

{case?1:?printf("Cuando los subárboles izquierdo y derecho estén vacíos, reemplácelos con 0 y sepárelos con espaciadores: \n");

T=createbitree(&Tree);

romper;

?case?2:Qtraversebitree(*T?);

romper;

?case?3:Ztraversebitree(*T?);

romper;

?case?4:Htraversebitree(*T ?);

break;

?case?5:printf("\nEl número de hojas es:?%d\n",Ftraversebitree(*T?));

break;

?case?6:break;

default:printf("¡Selección incorrecta! Vuelva a seleccionar\n");break;

}

} while(k!=6); //Hasta que se le asigne un valor de 6

return ?0;?

}

/************************Crear función de árbol binario* *********** *************************/

bitree?*createbitre

e(bitree?*T)

{

char?ch;

scanf("%d",&ch);

if(ch==0)?

(*T)=NULL;

else{?

if(!((*T)?=( bitnode?*)malloc(sizeof(bitnode))))

exit(0);

(*T)->date?=?ch;?//Generar nodo raíz ?

createbitree(&(*T)->lchild);

createbitree(&(*T)->rchild);

} return?T ;

}

/************************Función transversal de preorden****** ****** *******************/

Qtraversebitree(bitree?T)

{?

if( T){printf("%d?",T->fecha);

?if(Qtraversebitree(T->lchild))

?if (Qtraversebitree(T-> rchild))?return?1;

return?0;

}

else?return?1;

}

/************************Función transversal en orden********* *************** *******/?

Ztraversebitree(bitree?T)

{?

if(T){if(Ztraversebitree(T-> lchild))

?printf("%d?",T->fecha);

if(Ztraversebitree (T->rchild))?return?1;

return?0;

}

else?return?1;

}

/***** *******************Función transversal del postorder*************** **************/

Htraversebitree(bitree?T)

{?

if(T){if (Htraversebitree(T->lchild))

if( Htraversebitree(T->rchild))?

printf("%d?",T->fecha);?return ?1;

¿regresar?0;

}

más?regresar?1;

}

/************************ *Devuelve la función de número de nodo hoja*************/

Ftraversebitree(bitree?T)

{?

if(T){if(!((T->lchild)||(T->rchild))) ?j++;?

?if(Ftraversebitree(T->lchild))

?if(Ftraversebitree(T->rchild))?return?j;

retorno?j;

}

<

p> más?regresar?j;

}