Implementar una búsqueda y realizar comparaciones sobre su efectividad mediante un árbol binario

Se requiere que se implemente una búsqueda y que se realicen comparaciones de efectividad de dicha búsqueda, para ello utilizar búsqueda en un árbol binario en turbo c 3.0.
En primer lugar almacenar el listado de las notas en un archivo texto, donde la estructura debe contener CORRELATIVO, CARNET, NOMBRES, APELLIDOS, GRUPO DE LABORATORIO Y GRUPO TEÓRICO, NOTA DE PRIMERA TAREA, HORA DE LA DEFENSA, CLAVE de acuerdo al listado anexo.
Criterio de ordenamiento:
esta clave ;)**********Clave 1: Hora de la defensa, Clave, Apellidos, Nombres **********
Clave 2: Apellidos, Nombres
Clave 3: Nombres, Apellidos
Clave 4: Notas, Apellidos, Nombres
Clave 5: Grupo de Laboratorio, Apellidos, Nombres
Luego leer los datos del archivo externo e incorporarlos a un árbol binario ordenado, en el cual cada nodo contendrá los datos ya mencionados.
Las operaciones que debe permitir realizar son:
? Consulta (Mostrar cuantas comparaciones se hicieron para encontrar el dato o para determinar que no existe) los datos que se deben visualizar son: CORRELATIVO, CARNET, NOMBRES, APELLIDOS, GRUPO DE LABORATORIO Y GRUPO TEÓRICO, NOTA DE PRIMERA TAREA, HORA DE LA DEFENSA y CLAVE
? Imprimir el contendido del árbol binario en cualquiera de los tres métodos.
? Mostrar el nivel en que se encuentra el dato buscado
? Determinar el nivel de profundidad del árbol
? Para la búsqueda que permita hacerlo en base a los datos de ordenamiento, si hay más datos con alguno de ellos que permita mostrar los siguientes haciendo un recorrido EN ORDEN del contenido del árbol. (Por ej. Para la clave 5; si se le piden todos los del grupo de lab 02, debe mostrar el primero de ellos y permitir visualizar los siguientes del grupo de lab. 02 hasta el ultimo de dicho grupo, ¿si se le ingresa como búsqueda los? ¿Tres campos de búsqueda? Que limite la búsqueda a esos criterios)
No debe permitir duplicados.

1 Respuesta

Respuesta
1
Tienes que ordenarlos por una cosa que sea imposible que se repita osea el carnet.
Acá te mando un código de llenado
int main()
{
char resp; //donde insertar
int num;
raiz=NULL;
do{
cout<<"Ingrese un Numero: ";
cin>>num;
nuevo=new nodo;
nuevo->info=num;
nuevo->izq=nuevo->der=NULL;
padre=NULL;
x=raiz;
while(x!=NULL)
{
padre=x;
if(nuevo->info<x->info)
x=x->izq;
else x=x->der;
}
if (padre==NULL)
raiz=nuevo;
else
{
if(nuevo->info<padre->info)
padre->izq=nuevo;
else padre->der=nuevo;
}
cout<<"desea ingresar otro? ";
cin>>resp;
}while(resp!='n');
getch();
return 0;
}
ese llena con los numero que te ingresan.
para mostrar en orden previo:
(a p le mandas la raiz del arbol)
void previo(ptrnodo p){
if (p!=NULL)
{
cout<<p->informacion;
previo(p->izq);
previo(p->der);
}
}
Para orden simétrico pones el cout en medio de los dos previo y para posterior después de los 2 previo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas