Pila vs montón
La pila es una lista ordenada en la que la inserción y eliminación de elementos de la lista se puede realizar solo en un extremo llamado superior. Por este motivo, la pila se considera una estructura de datos de último en entrar, primero en salir (LIFO). Heap es una estructura de datos especial que se basa en árboles y satisface una propiedad especial llamada propiedad heap. Además, un montón es un árbol completo, lo que significa que no hay espacios entre las hojas del árbol, es decir, en un árbol completo, cada nivel se completa antes de agregar un nuevo nivel al árbol y los nodos en un nivel dado se completan desde de izquierda a derecha.
¿Qué es Stack?
Como se mencionó anteriormente, la pila es una estructura de datos en la que se agregan y eliminan elementos de un solo extremo llamado superior. Las pilas solo permiten dos operaciones fundamentales llamadas push y pop. La operación de empujar agrega un nuevo elemento a la parte superior de la pila. La operación pop elimina un elemento de la parte superior de la pila. Si la pila ya está llena, cuando se realiza una operación de inserción, se considera un desbordamiento de pila. Si se realiza una operación emergente en una pila que ya está vacía, se considera un desbordamiento de pila. Debido a la pequeña cantidad de operaciones que se pueden realizar en una pila, se considera una estructura de datos restringida. Además, de acuerdo con la forma en que se definen las operaciones push y pop, está claro que los elementos que se agregaron en último lugar a la pila salen primero de la pila. Por lo tanto, la pila se considera una estructura de datos LIFO.
¿Qué es Heap?
Como se mencionó anteriormente, heap es un árbol completo que satisface la propiedad de heap. La propiedad del montón establece que, si y es un nodo hijo de x, entonces el valor almacenado en el nodo x debe ser mayor o igual que el valor almacenado en el nodo y (es decir, valor (x) ≥ valor (y)). Esta propiedad implica que el nodo con el mayor valor siempre se colocaría en la raíz. Un montón construido con esta propiedad se llama max-heap. Hay otra variación de la propiedad del montón que establece lo contrario. (es decir, valor (x) ≤ valor (y)). Esto implica que el nodo con el valor más pequeño siempre se colocaría en la raíz, por lo que se denomina min-heap. Hay una amplia gama de operaciones realizadas en montones, como encontrar el mínimo (en min-montones) o el máximo (en max-montones), eliminar el mínimo (en min-montones) o el máximo (en max-montones),tecla creciente (en max-montones) o decreciente (en min-montones), etc.
¿Cuál es la diferencia entre Stack y Heap?
La principal diferencia entre pilas y montones es que, si bien la pila es una estructura de datos lineal, la pila es una estructura de datos no lineal. Stack es una lista ordenada que sigue a la propiedad LIFO, mientras que el montón es un árbol completo que sigue a la propiedad del montón. Además, la pila es una estructura de datos restringida que admite solo un número limitado de operaciones como push y pop, mientras que heap admite una amplia gama de operaciones, como buscar y eliminar el mínimo o máximo, aumentar o disminuir la clave y fusionar.