Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingenierı́a de la Computación Pontificia Universidad Javeriana Cali 8 de febrero de 2008 Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Árboles binarios de búsqueda: succesor succesor(x) if x.hder 6= NULL then return minimo(x.hder) y = x.padre while y 6= NULL and x == y.hder do x = y y = y.padre return y Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Árboles binarios de búsqueda eliminar(T,z) if z.hizq == NULL or z.hder == NULL then y=z else y = sucesor(z) if y.hizq 6= NULL then x = y.hizq else x = y.hder if x 6= NULL then x.padre = y.padre if y.padre == NULL then root(T) = x else if y == y.padre.hizq then y.padre.hizq = x else y.padre.hder = x if y 6= z then z.info = y.info return y Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Heap Es un arreglo que se interpreta como árbol binario La condición de orden que mantiene es: a.padre.info ≥ a.info Las operaciones que provee son: Convertir en Heap Construir Heap Se utilizan en el hepasort y también para implementar colas de prioridad Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Colas de prioridad Ofrecen las siguientes operaciones: Retornar el máximo valor Extraer el máximo valor Incrementar el valor de una llave Insertar un elemento Se utiliza, por ejemplo, en el sistema operativo para seleccionar el proceso al cual se le asigna el procesador, siguiendo el orden de las prioridades. Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Árboles rojo-negro Es un árbol binario que tiende a estar balanceado Cada nodo tiene un color que puede ser rojo o negro Se restringe el color que un nodo puede tener y gracias a eso se puede garantizar que ninguna rama es más que el doble de otra en longitud Se distinguen nodos internos y externos (hojas). Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Propiedades rojo-negro Todo nodo es ó rojo ó negro La raiz es negra Toda hoja es negra Si un nodo es rojo, sus dos hijos son negros Para cada nodo, todos los caminos desde el nodo hasta las hojas deben tener el mismo número de nodos negros. Un árbol rojo-negro con n nodos, tiene una profundidad máxima de 2log (n + 1) Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles Operaciones sobre árboles rojo-negro Las operaciones que ofrece esta estructura de datos so: Rotar a la izquierda y a la derecha Insertar un elemento Eliminar Además todas las operaciones disponibles para árboles binarios de búsqueda: máximo, extraer-máximo e incrementar llave.