Red de conocimiento informático - Descarga de software - Utilice el lenguaje C para construir un árbol binario que contenga n nodos, utilice una lista enlazada binaria para almacenarlo y luego implemente el recorrido de pedido previo, medio y posterior del árbol binario.

Utilice el lenguaje C para construir un árbol binario que contenga n nodos, utilice una lista enlazada binaria para almacenarlo y luego implemente el recorrido de pedido previo, medio y posterior del árbol binario.

#include

#include

#define max 100

nodo de estructura typedef{ //Estructura de árbol binario

char data;

struct node *lc,*rc; //Subárboles izquierdo y derecho

}bt,*list;

/*

Árbol binario

A

/ \

B C

/ \ \

D E F

/ / \

K G H

entrada

ABDK000E00C0FG00H00

salida

ABDKECFGH

KDBEACGFH

KDEBGHFCA

*/

int creat(lista*raíz){ // Crea un árbol binario. La raíz usa un puntero bidimensional

char n;

scanf(" %c",&n); %C es por conveniencia La función de intervalo scanf no lee espacios

if (n=='0') //0 es el intervalo

{

*root=NULL; return 0 ; //Fin de la entrada

}

*root=(list)malloc(sizeof(bt));

if (!*root) devuelve 0;

(*root)->data=n;

creat(&(*root)->lc);

creat(&(*root) ->rc);

return 1;

}

int pre(list root){ //Recorrido de preorden

if (!root) devuelve 0

printf("%c",root->data);

pre(root->lc);

pre (root->rc);

return 1;

}

int mid(list root){ //Mid- recorrido de orden

if (!root) devuelve 0;

mid(root->lc);

printf("%c",root->data );

mid(root->rc);

return 1;

}

int bh(lista raíz){ / /Recorrido posterior al pedido

if (!root) devuelve 0

bh(root->lc);

bh(root->rc);

printf( "%c",root->data);

devuelve 1;

}

int suma(lista raíz ,int *cnt){ //Encontrar la suma del número de nodos

if(root){

(*cnt)++;

s

um(root->lc,cnt);

suma(root->rc,cnt);

devuelve 1;

}

return 0;

}

int sumleaf(list root,int *cnt){ //Encuentra el número de nodos hoja

if (root)

{

if ((!root->lc)&&(!root->rc))

{ (*cnt)++ }

sumleaf(root->lc,cnt);

sumleaf(root->rc,cnt);

devuelve 1;

}

return 0;

}

int deep(list root,int *cnt){ //Buscar profundidad

if ( !root)

{

*cnt=0; devolver 0

}

int m,n;

n=m=*cnt;

profundo(root->lc,&m);

profundo(root->rc,&n);

*cnt=m+1;

if(m

devuelve 1;

}

int floor(list root){ //Recorrido de niveles

if(root)

{

list s[max]; ; //Usar cola para almacenamiento

front=-1; rear=0; s[rear]=root; //Inicialización

while (rear!=front) //Cuando Finalizar cuando la cola esté vacía

{

printf("%c",s[++front]->data);

if (s[ rear ]->lc)

{s[1+rear]=s[rear]->lc; rear++ } //Guarda el subárbol izquierdo en la cola

if ( s[rear]->rc)

{s[1+rear]=s[rear]->rc; rear++ } //Guarda el libro correcto en la cola

}

devuelve 1;

}

devuelve 0;

}

int scop(lista * r ,list *p){ //Copia del árbol

if(*r){

*p=(list)malloc(sizeof(bt));

if(*p){

(*p)->datos=(*r)->datos;

scop(&(*r)->lc, &( *p)->lc);

scop(&(*r)->rc,&(*p)->rc);

devuelve 1;

> }

}

*p=NULL;

devuelve 0;

}

int sespect( list root,list *p,char e){ //Buscar el puntero de retorno del nodo *p p es un puntero secundario

if(root){

if (root->data== e)

{ *p=root; devolver 1;

}

sespect(root->lc,p,e);

sespect(root->rc,p,e);

}

devuelve 0;

}

void main( ){

lista b,s,m

int n,t=1

char ch='\0'; p> printf("************Bitree************\n");

while(t){ // Bucle operación

printf("input a tree(int):\n");

s=m=b=NULL //Inicialización del árbol binario

creat (&b);

// Salida del árbol binario según tres recorridos

printf("\npre ");

printf; ("\ nmid "); medio(b);

printf("\nbh "); bh(b);

//Buscar el número de nodos, Número de nodos hoja, profundidad

n=0; sum(b,&n)("sumdata: %d\n",n); n=0; hojasum(b,&n); printf("hojasum: %d\n",n);

n=0; \n", n);

//Copia del árbol binario

scop(&b,&s);

printf("\nscopy árbol:\npre ");

p>

pre(s); printf("\nmid ");

mid(s); printf("\nbh ");

bh(s); printf("\n");

//Buscar nodo

printf("busca un dato:\n");

scanf(" %c ",&ch); //Tenga en cuenta que agregar un espacio delante de %C es para espaciado. scanf no lee espacios

sespect(b,&m,ch); /p>

if(m)

printf("sepect : %c \n",m->datos);

else

printf ("Error, no hay datos: %c \n",ch);

//Ingrese 1 para continuar, ingrese 0 para salir

printf("continuar ingrese 1, romper entrada 0:\n");

scanf("%d",&t);

}

}