Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Árbol Binario de Búsqueda Implementación Ligada 1 Nodo del Árbol G D A L I S Función: inicializa() Recibe: raíz Regresa: nada Raíz == NULO Función: vacío() Recibe: raíz Regresa: booleano ¿Raíz == NULO? Si: Regresar verdadero No: Regresar falso Función: vacío() Recibe: raíz Regresa: booleano ¿Raíz == NULO? Si: Regresar verdadero No: Regresar falso Función: recupera() Recibe: raíz, posi Regresa: elemento ¿Raíz == NULO o posi == NULO? Si: ¡Excepción! Insuficiencia de datos Terminar No: regresar posielemento Función: inserta() Recibe: raíz, elemento Regresa: nada ¿Raíz == NULO? Si: aux = nuevo nodo auxele = ele raíz = aux No: ¿elemento < raízele? Si: insertar(raízizq, elemento) No: insertar(raízdere, elemento) Función: localiza() Recibe: raíz, elemento Regresa: posición ¿Raíz == NULO? Si: devolver NULO Terminar No: ¿elemento == raízele? Si: devolver raíz No: ¿elemento < raízele? Si: localiza(raízizq, elemento) No: localiza(raízdere, elemento) Función: menor() Recibe: raíz Regresa: posición ¿Raíz == NULO? Si: devolver NULO Terminar No: ¿raízizq == NULO? Si: devolver raíz No: devolver menor(raízizq) Función: mayor() Recibe: raíz Regresa: posición ¿Raíz == NULO? Si: devolver NULO Terminar No: ¿raízdere == NULO? Si: devolver raíz No: devolver mayor(raízdere) Función: es_hoja() Recibe: raíz Regresa: booleano ¿Raíz == NULO? Si: devolver FALSO ¿raízizq == NULO Y raízdere == NULO? Si: devolver VERDADERO No: devolver FALSO ¡MUCHO OJO! Los recorridos no necesariamente deben imprimir el árbol, se pueden realizar diferentes procesos dentro del recorrido. Función: recorrido_preorder() Recibe: raíz Regresa: nada ¿Raíz == NULO? Si: terminar Imprimir raízelemento /// Aquí es el proceso Recorrido_preorder(raízizq) Recorrido_preorder(raízdere) Función: recorrido_inorder() Recibe: raíz Regresa: nada ¿Raíz == NULO? Si: terminar Recorrido_inorder(raízizq) Imprimir raízelemento /// Aquí es el proceso Recorrido_inorder(raízdere) Función: recorrido_postorder() Recibe: raíz Regresa: nada ¿Raíz == NULO? Si: terminar Recorrido_postorder(raízizq) Recorrido_postorder(raízdere) Imprimir raízelemento /// Aquí es el proceso Función: altura() Recibe: raíz Regresa: entero ¿Raíz == NULO? Si: devolver 0 No: alt_izq = altura(raízizq) alt_dere = altura(raízdere) ¿alt_izq > alt_dere? Si: devolver alt_izq + 1 No: devolver alt_dere + 1 Función: elimina() Recibe: raíz, posición Regresa: nada ¿Raíz == NULO? Si: Insuficiencia de datos Terminar No: ¿es_hoja(raíz)? Si: liberar raíz raíz = NULO No: ¿raízizq != NULO? Si: pos_reemplazo = mayor(raízizq) No: pos_reemplazo = menor(raízdere) raízelemento = pos_reemplazoelemento elimina(raíz, pos_reemplazo) Bienvenidos a: Árboles Binarios de Búsquedas Fuentes Experiencia Laboral Joyanes L. (2006). Programación en C++. Algoritmos, Estructuras de Datos y Objetos. España. Mcgraw-hill / Interamericana De España Silvia Guardati Buemo (2007). Estructura de datos orientada a objetos: Algoritmos con C++ Pearson 20
Compartir