



















































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Programacion en C++ ejercicios practicos
Tipo: Apuntes
1 / 59
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




















































Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected]
Posible tipo de dato para definir un árbol binario. typedef struct arbol{ int info; //datos struct arbol *p; //apuntador al padre struct arbol *izq; //apuntador al hijo izq. struct arbol *der; //apuntador al hijo der. }tipoArbol; typedef tipoArbol * tipoArbolPtr;
5 Los árboles binarios no necesariamente deben tener sus dos hijos
Altura : Es el nivel de la hoja en el camino mas largo desde la raíz mas
Profundidad= Nivel de F= Altura de A= Grado de C= Nivel 0 Nivel 1 Nivel 2 Nivel 3 La profundidad de un árbol binario es el máximo nivel de cualquier hoja del árbol. Otros datos a calcular de un árbol son los siguientes:
yx xz Sea x un nodo en un árbol de búsqueda binaria. Si y es un nodo del sub-árbol izquierdo de x , entonces la clave de y clave de x. Si z es un nodo del sub-árbol derecho de x , entonces la clave de x clave de z.
typedef struct arbol{ int info; //datos struct arbol *p; //apuntador al padre struct arbol *izq; //apuntador al hijo izq. struct arbol *der; //apuntador al hijo der. }tipoArbol; typedef tipoArbol * tipoArbolPtr; void insertar(tipoArbolPtr *ra, int dato); int main(){ tipoArbolPtr raiz=NULL; insertar(&raiz,5); insertar(&raiz,3); insertar(&raiz,4); }
Enseguida se presenta el código necesario de la función de inserción en un árbol binario. Realice las pruebas de escritorio para insertar 5, 3, 4.
void insertar(tipoArbolPtr ra, int dato){ tipoArbolPtr nuevo, ant, act; nuevo=crearNodo(dato); if(!nuevo) printf(“No hay memoria”); else { if(ra==NULL) ra=nuevo; else { ant=ra; act = *ra; while (act != NULL && dato!=ant->info){ ant = act; if ( dato < ant->info) act = act->izq; else act= act->der; } if(dato == ant->info) printf(“dato ya existe"); else { if(dato<ant->info) ant->izq=nuevo; else ant->der=nuevo; nuevo->p=ant; } } } }
Eliminación en un árbol de búsqueda binaria: CASO 1. Nodo hoja. 15 5 16 3 12 20 10 18 23 6 7 z 15 5 16 3 12 20 10 13 18 23 6 7
Eliminación en un árbol de búsqueda binaria: CASO 2. Nodo con un solo hijo 15 5 3 12 20 13 18 10 23 6 7 15 5 16 3 12 20 10 13 18 23 6 7 z
Eliminar un elemento en un árbol de búsqueda binaria