1. Escriba un programa para ingresar arbitrariamente el número de nodos y los valores de los nodos de un árbol binario, construya un árbol binario y use tres algoritmos transversales recursivos (orden previo, orden medio y orden posterior).
árbol.h
#include
#include
#define MAX_NODE 50
typedef estructura BiTNode
{
datos char;
BiTNode *lchild,*rchild;
}BiTNode ,*BiTree;
BiTree CreateBiTree();
void InorderTraverse( BiTree T);
creatTree.cpp
#include" tree.h"
BiTree CreateBiTree()
{
BiTree T;
char ch;
scanf("%c",&ch);
if (ch=='#')
{
T=NULL;
return T;
}
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
if (T==NULL)
{
printf("¡Error en la creación del árbol!");
T=NULL;
return T;
}
T->data=ch;
T->lchild=CreateBiTree(); p> p>
T->rchild=CreateBiTree();
return T
}
}
InorderTraverse; .cpp
#include "tree.h"
void InorderTraverse( BiTree T)
{
Pila de BiTree[MAX_NODE], p= T ;
int top=0 , bool1=1 ;
if (T==NULL)
printf("¡El árbol binario está vacío!\ n" );
else
{
hacer
{
mientras (p!=NULL) p>
{
pila[++top]=p
p=p->lchild
}
;if (arriba==0)
{
bool1=0 ;
}else{
p=stack[ arriba] ;
arriba--
printf("%c",p->datos
);
p=p->rchild ;
}
} mientras (bool1!=0) ;
}
}
main_fun.cpp
#include "tree.h"
int main()
{
BiTree T= CreateBiTree();
InorderTraverse(T);
devuelve 0;
}
traverse.cpp
#include "tree.h"
void PreorderTraverse(BiTree T)
{
if (T!=NULL)
{
/* Accede al nodo raíz*/
PreorderTraverse(T->lchild) ;
printf("%c",T->data) ;
PreorderTraverse(T->rchild)
}
}
Por ejemplo, ingrese AB###
Salida BA
Entrada de pedido anticipado y salida de orden medio
Puede modificar el método transversal para cambiar el resultado de salida.