2. Es una estructura de datos en la que los elementos se atienden
en el orden indicado por una prioridad asociada a cada uno. Si
varios elementos tienen la misma prioridad, se atenderán de
modo convencional según la posición que ocupen.
Una cola de prioridad soporta acceso y eliminación del
elemento de mayor prioridad: primero() y suprimir(). Puede
implementarse como una lista ordenada por prioridad, cuya
complejidad para el caso peor en la operación insertar es
O(N), un árbol binario de búsqueda, con complejidad media en
las operaciones primero() y suprimir(): O(log N), o un árbol
binario de búsqueda equilibrado.
3. CARACTERÍSTICAS GENERALES:
• Este tipo especial de colas tienen las mismas operaciones que las colas
, pero con la condición de que los elementos se atienden en orden de
prioridad.
• Ejemplos de la vida diaria serían la sala de urgencias de un hospital,
ya que los enfermos se van atendiendo en función de la gravedad de
su enfermedad.
• Entendiendo la prioridad como un valor numérico y asignando a altas
prioridades valores pequeños, las colas de prioridad nos permiten
añadir elementos en cualquier orden y recuperarlos de menor a
mayor.
4. IMPLEMENTACIÓN
Hay 2 formas de implementación:
• Añadir un campo a cada nodo con su prioridad.
Resulta conveniente mantener la cola ordenada por
orden de prioridad.
• Crear tantas colas como prioridades haya, y
almacenar cada elemento en su cola.
5. TIPOS
• Colas de prioridades con ordenamiento ascendente: en
ellas los elementos se insertan de forma arbitraria, pero a la
hora de extraerlos, se extrae el elemento de menor
prioridad.
• Colas de prioridades con ordenamiento descendente: son
iguales que la colas de prioridad con ordenamiento
ascendente, pero al extraer el elemento se extrae el de
mayor prioridad.
6. OPERACIONES
Las operaciones de las colas de prioridad son las mismas que las de
las colas genéricas:
• Crear: se crea la cola vacía.
• Añadir: se añade un elemento a la cola, con su correspondiente
prioridad.
• Eliminar: se elimina el elemento frontal de la cola.
• Frente: se devuelve el elemento frontal de la cola.
• Destruye: elimina la cola de memoria.
10. INTRODUCCION
• Vamos a hablar primero un poco de que son los arboles
binarios; nos dice Wikipedia “Un árbol binario es un grafo
conexo, acíclico y no dirigido tal que el grado de cada vértice
no es mayor a 3″, eso significa que tenemos un grafo donde
cada nodo puede tener máximo 2 hijos ( o hojas ) y estas
hojas no pueden tener como hijos a cualquier otra hoja
anterior como podemos ver en la siguiente imagen:
11. EJEMPLO:
Podemos ver en la imagen como “Raíz” es padre de “Hoja 1″
y “Hoja 2″ y estas a su vez también son la raíz de las “Sub
hojas” y se vuelve un proceso recursivo hasta n cantidad de
hojas.
12. ¿PARA QUE SIRVE UN ÁRBOL BINARIO?
Como todos sabemos un árbol binario es una estructura de datos, y como todas, este
sirve para organizar datos para facilitar su manipulación, ya sea el ingreso, borrado o
búsqueda de datos, y precisamente una de las principales ventajas de los árboles
binarios es la búsqueda, ya que como en muchos algoritmos de búsqueda necesitamos
tener la información ordenada y en nuestros árboles binarios precisamente los datos
van ingresando de forma ordenada.
Recorridos con los conocidos métodos recursivos:
• Inorden
• Postorden
• Preorden
13. ¿CÓMO SE INGRESA LA INFORMACIÓN?
Como dije anteriormente, la información se ingresa de forma ordenada esto se resuelve de
forma muy sencilla con estos pasos:
• Se toma el dato a ingresar X
• Partiendo de la raíz preguntamos: Nodo == null ( o no existe ) ?
• En caso afirmativo X pasa a ocupar el lugar del nodo y ya hemos ingresado nuestro
primer dato.
• En caso negativo preguntamos: X < Nodo
• En caso de ser menor pasamos al Nodo de la IZQUIERDA del que acabamos de preguntar
y repetimos desde el paso 2 partiendo del Nodo al que acabamos de visitar
• En caso de ser mayor pasamos al Nodo de la DERECHA y tal cual hicimos con el caso
anterior repetimos desde el paso 2 partiendo de este nuevo Nodo.
14. • Nos daremos cuenta de que es un proceso RECURSIVO en el cual al final por más grande que
sea el árbol el dato a entrar ocupará un lugar, vamos a ejemplificar lo ya mencionado con una
imagen: