Heap Data Structure Definition