Red de conocimientos turísticos - Información de alquiler - Implementación del algoritmo de clasificación de árboles binarios (diseño del curso de estructura de datos)

Implementación del algoritmo de clasificación de árboles binarios (diseño del curso de estructura de datos)

# include & ltmalloc.h & gt

# include & ltstdio.h & gt

#define NUM 7 //Definición de macro

int I; Definición de tipo de variable

nodo de estructura typedef {

int data; //campo de datos

nodo de estructura * siguiente//campo de puntero

}Nodo, * LNodo//Construir nodo y puntero correspondiente con estructura.

estructura de árbol typedef {

int data;

estructura de árbol* izquierda

estructura de árbol*derecha;

}Árbol, *LTree//Construye un árbol y su puntero correspondiente con una estructura.

CreateList( LNode Head) //Crea una única lista enlazada.

{

for(int I = 1; I<= NUMI++) //Crea un bucle e ingresa NUM datos en secuencia.

{

LNodo temperatura; //Nodo intermedio

temp =(LNode)malloc(sizeof(Node)); //Asignación de almacenamiento dinámico

temp->next = NULL //Inicialización del nodo intermedio

scanf("%2d",&temp->data //Ingrese el campo de datos temporales asignado al nodo

p>

temp->next = Head->Next;

head->next = temp//Inserte el nodo temporal en la lista vinculada

}

Return 1; //Return 1

}

insert sqtree(LTree & Root, LNode temp) //Configuración del principio de clasificación del árbol binario

p>

{

If (!root)//Ejecutado cuando la raíz está vacía.

{

root =(LTree)malloc(sizeof(Tree));//Asignación de almacenamiento dinámico

root-& gt; p>

root-& gt; right = vacío; // inicialización

root-& gt; temp-& gt; 1; //La función se ejecuta normalmente y devuelve 1.

}

Otro

{

if(root->data>= temp->;data)

p>

Devuelve insert sqtree(root->left, temp); //Compara el subárbol izquierdo insertado

else if(root->data<temp->;data)

Devuelve insert sqtree(root-& gt; right, temp); //Compara el subárbol derecho insertado

}

Devuelve 1; , no se procesará y se devolverá 1.

}

Void BianLiTree(LTree root) //Utilice el recorrido de orden medio para ordenar todos los números en orden ascendente de izquierda a derecha.

{

If(root) //root no está vacío y no se puede ejecutar.

{ BianLiTree(root->left); //Procesa recursivamente los nodos de izquierda a hoja, no se ejecuta cuando root->;cuando left está vacío.

printf("%4d", root->data); //Salida

Árbol doble (raíz->par); //Procesa el nodo correcto

}

}

int main()

{

LNode Head = NULL

LRaíz del árbol = NULL//Inicialización

head =(LNode)malloc(sizeof(Node));//Asignación de almacenamiento dinámico

head->; next = NULL//Inicialización

>

printf("Ingrese un número:\ n "); //Ingrese la declaración de solicitud

If (!CreateList( Head )) //No ejecute la siguiente declaración, la lista enlazada individualmente regresa exitosamente 1.

Devuelve 0; //Finaliza la función y devuelve 0.

LNode temp = Head-& gt; Next; //Asigna el campo de puntero del puntero principal al nodo intermedio.

Detener la ejecución cuando while(temp) //temp esté vacío.

{

If (!InsertSqTree(root, temp)) //La clasificación se ejecuta normalmente, devuelve 1 y no ejecuta la siguiente declaración.

Devuelve 0; //Finaliza la función y devuelve 0.

head->next = temp->Next; //Asigna el campo de puntero del puntero intermedio al campo de puntero del nodo principal.

Free (temporal); //Liberar espacio

temp = Head-& gt; Next //Asigna el campo del puntero principal al nodo intermedio, los tres anteriores; oraciones Implementado el movimiento hacia atrás del puntero temporal.

}

printf("El resultado es:\ n "); //Instrucción de solicitud de salida

BianLiTree(root); recorra la salida y observe los nodos del árbol.

Devuelve 1; //La función es normal y devuelve 1.

}