Answer:
I am writing a Python function:
def is_maxheap(list):
#finds the length of the list
size=len(list)
#loop has a variable i which starts traversing from root til end of last #internal node
for i in range(int((size - 2) / 2) + 1):
if list[2 * i + 1] > list[i]: #If left child is greater than its parent then return #false
return False
if (2 * i + 2 < size and
list[2 * i + 2] > list[i]): #checks if right child is greater, if yes then #returns false
return False
return True
Step-by-step explanation:
The function is_maxheap() traverses through all the internal nodes of the list iteratively. While traversing it checks if the node is greater than its children or not. To check the working of this function you can write a main() function to check the working on a given list. The main() function has a list of integers. It then calls is_maxheap() method by passing that list to the function. The program displays a message: "valid max heap" if the list represents valid max-heap otherwise it returns invalid max heap.
def main():
list = [10,7,8]
size = len(list)
if is_maxheap(list):
print("Valid Max Heap")
else:
print("Invalid Max Heap")
main()
The program along with its output is attached in a screenshot.