Implementation on heap data structures

This implementation uses vectors to accommodate the growing heap size