Estructura de Datos Heap

Estructura de Datos Heap

En programación, una estructura de datos es una forma de organizar y almacenar datos en la memoria de una computadora para que se puedan acceder y utilizar de manera eficiente. Una de estas estructuras es el Heap, que es un tipo de árbol binario utilizado para organizar y recuperar elementos en orden de prioridad.

En este tutorial sobre la estructura de datos Heap, aprenderás qué es un Heap, cómo funciona, los diferentes tipos de Heap, operaciones básicas, su complejidad y cómo implementar un Heap en tu código.

📋 Aquí podrás encontrar✍
  1. ¿Qué es un Heap?
  2. Operaciones básicas de un Heap
  3. Complejidad
  4. Cómo implementar un Heap
  5. Ejemplos de código
  6. Conclusión
  7. Preguntas frecuentes
    1. ¿Qué es un Heap?
    2. ¿Cuáles son los tipos de Heap?
    3. ¿Cuáles son las operaciones básicas de un Heap?
    4. ¿Cómo se implementa un Heap?

¿Qué es un Heap?

Un Heap es una estructura de datos de árbol binario completa, lo que significa que cada nivel está completamente lleno excepto potencialmente el último nivel, que se llena de izquierda a derecha. Además, un Heap cumple con la propiedad del Heap, lo que significa que la clave de cada padre en el árbol es menor o igual que la clave de los hijos.

Existen dos tipos de Heap: Max Heap y Min Heap. En un Max Heap, la clave de cada nodo es mayor o igual que la clave de sus hijos, mientras que en un Min Heap la clave de cada nodo es menor o igual que la clave de sus hijos.

Operaciones básicas de un Heap

Las operaciones básicas de un Heap son las siguientes:

Insertar: Se inserta un nuevo elemento en el Heap y se mantiene la propiedad del Heap.

Eliminar: Se elimina un elemento del Heap y se mantiene la propiedad del Heap.

Encontrar la raíz: Se obtiene el elemento de mayor o menor valor (dependiendo del tipo de Heap) en el Heap sin eliminarlo.

Complejidad

La complejidad de las operaciones en un Heap depende del tamaño del Heap y la estructura del árbol. La complejidad de las operaciones más comunes en un Heap son:

Insertar: O(log n)

Eliminar: O(log n)

Encontrar la raíz: O(1)

Donde n es el número de elementos en el Heap.

Cómo implementar un Heap

Un Heap se puede implementar utilizando un arreglo en lugar de un árbol. El primer elemento en el arreglo es la raíz del Heap y los demás elementos se van colocando en el orden que corresponde en el árbol.

Insertar: Para insertar un nuevo elemento en el Heap, se agrega al final del arreglo y se recorre hacia arriba para mantener la propiedad del Heap.

Eliminar: Para eliminar un elemento del Heap, se intercambia con el último elemento y luego se recorre hacia abajo para cumplir con la propiedad del Heap.

Ejemplos de código

Implementación de un Max Heap:


class MaxHeap:
def __init__(self):
self.heap = []

def insert(self, value):
self.heap.append(value)
self.__floatUp(len(self.heap) - 1)

def peek(self):
if self.heap:
return self.heap[0]
else:
return None

def pop(self):
if len(self.heap) > 1:
self.__swap(0, len(self.heap) - 1)
max = self.heap.pop()
self.__bubbleDown(0)
elif len(self.heap) == 1:
max = self.heap.pop()
else:
max = None
return max

def __swap(self, i, j):
self.heap[i], self.heap[j] = self.heap[j], self.heap[i]

def __floatUp(self, index):
parent = (index - 1) // 2
if index <= 0: return elif self.heap[index] > self.heap[parent]:
self.__swap(index, parent)
self.__floatUp(parent)

def __bubbleDown(self, index):
left = index * 2 + 1
right = index * 2 + 2
largest = index
if len(self.heap) > left and self.heap[largest] < self.heap[left]: largest = left if len(self.heap) > right and self.heap[largest] < self.heap[right]: largest = right if largest != index: self.__swap(index, largest) self.__bubbleDown(largest)

Conclusión

El Heap es una estructura de datos útil para organizar y recuperar elementos en orden de prioridad. En este tutorial, aprendiste qué es un Heap, cómo funciona, los diferentes tipos de Heap, sus operaciones básicas, su complejidad y cómo implementar un Heap en tu código.

Preguntas frecuentes

¿Qué es un Heap?

Un Heap es una estructura de datos de árbol binario utilizado para organizar y recuperar elementos en orden de prioridad.

¿Cuáles son los tipos de Heap?

Existen dos tipos de Heap: Max Heap y Min Heap.

¿Cuáles son las operaciones básicas de un Heap?

Las operaciones básicas de un Heap son Insertar, Eliminar y Encontrar la raíz.

¿Cómo se implementa un Heap?

Un Heap se puede implementar utilizando un arreglo en lugar de un árbol.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir