Which data structure is most suitable for implementing an LRU (Least Recently Used) cache?

Why is the space complexity of a recursive algorithm often higher than its iterative counterpart?

Where is a heap data structure typically used?

When does the Dijkstra's algorithm fail to find the shortest path in a graph?