Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Árboles Binarios: Implementación y Recorridos, Apuntes de Programación C

Programacion en C++ ejercicios practicos

Tipo: Apuntes

2019/2020

Subido el 22/03/2022

crm-sede
crm-sede 🇲🇽

5

(2)

5 documentos

1 / 59

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Estructura de Datos
Tema 6. Árboles
Presenta: David Martínez Torres
Universidad Tecnológica de la Mixteca
Instituto de Computación
Oficina No. 37
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b

Vista previa parcial del texto

¡Descarga Árboles Binarios: Implementación y Recorridos y más Apuntes en PDF de Programación C solo en Docsity!

Estructura de Datos

Tema 6. Árboles

Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected]

Contenido

1. Definición y operaciones

2. Implementación de árboles binarios

3. Recorrido de árboles binarios

4. Implementación de árboles AVL

5. Árboles n-arios: La estructura TRIE

6. Referencias

1. Definición y operaciones

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;

1. Definición y operaciones

5 Los árboles binarios no necesariamente deben tener sus dos hijos

1. Definición y operaciones

Altura : Es el nivel de la hoja en el camino mas largo desde la raíz mas

  1. Por definición, la altura de un árbol vacío es - 1  Grado : Es el número de hijos que tiene en ese momento el nodo  Nivel de un nodo : es su distancia desde la raíz al nodo  Orden : Número potencial de hijos que puede tener cada elemento de un árbol. Nivel 0 Nivel 1 Nivel 2 Nivel 3

1. Definición y operaciones

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:

1. Definición y operaciones

1. Insertar elementos

2. Eliminar elementos

3. Buscar elementos

4. Recorrer el árbol

5. Modificar elementos

6. Mínimo

7. Máximo

8. Predecedor

9. Sucesor

10. Guardar datos al archivo

11. Leer datos del archivo

2. Implementación de árboles binarios

x

yx xz 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); }

2. Implementación de árboles binarios

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; } } } }

2. Implementación de árboles binarios

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

 Algoritmo:

  1. Verificar que el árbol no esté vacío
  2. Introducir el elemento a eliminar
  3. Buscar el elemento
  4. Si se encontró, imprimir el árbol actual indicando el elemento a eliminar.
  5. llamar a la función eliminar, pasándole como parámetros el apuntador de la raíz del árbol por referencia y el apuntador del elemento encontrado
  6. La función eliminar debe considerar los tres casos de eliminación
  7. Al eliminarlo, liberar la memoria del elemento y mostrar el árbol sin el elemento.

3. Recorrido de árboles binarios

 En orden

 En preorden

 En postorden