Completar la operación de bifurcación (almacenar en orden), lenguaje de programación c, ¡debe almacenarse en orden! ¡Estoy buscando ayuda! ¡Muchas gracias!
Tareas experimentales:
(1) Crear un árbol binario e implementar el algoritmo para recorrer el árbol binario en preorden, inorden y postorden.
(2) Encuentra el nodo especificado.
(3) Diseñar un algoritmo para contar el número de nodos en un árbol binario, es decir, el número de nodos con grado 1.
(4) Diseñar un algoritmo para encontrar la altura de un árbol binario.
*/
#includelt;stdio.hgt;
#includelt;stdlib.hgt;
#includelt;conio.hgt ;
#define MAXSIZE 100
typedef char tipo de datos;
typedef struct node
{
datos de tipo de datos ;
estructura nodo *lchild, *rchild;
}bitree;
void CreateBitree(bitree * amp; t, tipo de datos *datos)
{
bitree *St[MAXSIZE], *p=NULL
int top=-1, k, j=0; ch;
t=NULL;
ch=datos[j];
mientras(ch!='\0')
{
cambiar(ch)
{
case '(':top; St[top]=p; k=1; break; p> p>
caso ')': arriba--;
caso ',': k=2
predeterminado:
p=(bitree *)malloc(sizeof(bitree));
p-gt; data=ch;
p -gt; NULL;
if(t==NULL)
t=p
si no
{
switch( k)
{
caso 1: St[top]-gt; lchild=p;
caso 2: St[top]- gt; rchild=p;romper;
}
}
}
j;
ch= datos[ j];
}
}
}
visita nula(datos de tipo de datos)
{ p>
printf("c\t", data);
}
void preorden ( bitree *t ) // recorrido de preorden del árbol binario
{
si ( t ! = NULL )
{
visita (t-gt; datos
preorden (t-gt; lchild ); preorder ( t-gt; rchild );
}
}
void inorder ( bitree *t )//recorrido de orden medio del árbol binario p>
{
if ( t != NULL )
{
inorder ( t-gt;lchild
visita (t-gt; datos);
inor
der ( t-gt; rchild );
}
}
void postorder ( bitree *t )//recorrido posterior al pedido del árbol binario p>
{
if ( t != NULL )
{
postorder ( t-gt;lchild
postorder (t-gt;rchild);
visita (t-gt;data);
}
}
bitree * find( bitree *t, tipo de datos x) //busca el nodo especificado en un árbol binario
{
bitree *p;
if (t= =NULL)
return(NULL);
if (t-gt; data == x)
return(t); //encontrar exitoso
p=find(t-gt;lchild,x); //busca el subárbol izquierdo
if (p==NULL)
p=find(t -gt; rchild, x); //busca el subárbol correcto
return(p);
}
int onenodenum(bitree *t)//Número de nodos con grado 1.
{
int nl, nr;
if(t==NULL)
return 0;
if(t-gt;lchild!=NULL amp;amp;t-gt;rchild!=NULL)
return 0;
de lo contrario
devuelve 1;
nl=onenodenum(t-gt;lchild);
nr=onenodenum(t-gt;rchild); p>
p>
return nl nr;
}
int nodenumber(bitree *t)//Calcular el número de nodos en el árbol binario
{
int nl, nr;
int hoja;
if ( t == NULL )
devuelve 0 ;
if(t-gt;lchild == NULL amp; t-gt;rchild==NULL)
return 1;
nl=nodenumber( t-gt;lchild) ;
nr=nodenumber(t-gt;rchild);
leaf=nl nr;
return (2*leaf- 1 onenodenum(t)) ;
}
int bitreeHeight(bitree *t)
{
int lchildh, rchildh;
si(t==NULL)
devuelve 0;
si no
{
>lchildh=bitreeHeight(t-gt;lchild);
rchildh=bitreeHeight(t-gt;rchild);
return(lchildhgt;rchildh)?(lchildh 1): (rchildh 1);
}
}
lista de impresión vacía()
{
printf("¡Por favor seleccione una función! \n");
printf("◆(1): Atravesar (n) en el orden anterior");
printf("◆ (2): Atravesar en orden intermedio\n");
printf("◆(3): Atravesar en segundo orden\n");
printf("◆(4 ): Encuentra el nodo especificado\n");
printf("◆(5): Calcula el número de nodos en el árbol binario, el número de nodos con grado 1\n"); p>
printf("◆(6): Encuentra la altura del árbol binario (n)");
printf("◆(7): Deja\n"); >
printf("Tú eliges: ");
printf("Tú eliges: "
}
void main()); p>
{ p>
int función
int b;
bitree *t; >
tipo de datos datos[MAXSIZE ];
printf("¡Ingrese el valor!\n");
scanf("s", datos
);CreateBitree(t, datos );
for(b=0;bgt;=0;b)
{
printlist();
scanf( "d", amp; función);
if(función==7)
romper;
else p>
{ p>
interruptor(función)
{
caso 1:
{
preorder(t); descanso;
}
caso 2:
{
inorder(t);
}
caso 3:
{
postorder(t);
}
caso 4: //buscar el nodo especificado
{
bitree *s;
printf("¡Ingrese el valor que desea encontrar! \n");
fflush(stdin); //vaciar el caché
scanf("c", amp; x);
s=find (t, x); //asigna el puntero devuelto por la búsqueda a s
if(s!=NULL)
printf(" ¡Encontrado exitosamente!\n");
else
printf("¡No existe tal nodo!\n");
break; >Ejemplo 5:
{
int allnode, onenode;
allnode=nodenumber(t);
onenode=onenodenum(t );
printf("El número de nodos es d y el número de nodos con grado 1 es d\n", allnode, onenode
break; >
}
caso 6:
{
int altura;
altura=bitreeHeight(t);
printf("La altura del árbol binario es d\n",height);
break;
}
predeterminado: p>
p>
printf("¡No existe tal función!\n");
};
printf("Presione cualquier botón para continuar\n");
printf("------------------------ ----- --------\n");
getch();
}
}
}
}