May heap tree po ako dito, and gumagana naman yung Print function, pero ang problema ko ngayon
yung delete function, kagabi ko pa inaayos pero di ko maayos.
Ang balak ko po sana, madelete yung max(9) and min(1) value, pero iba po nangyayari. Thank you po
yung delete function, kagabi ko pa inaayos pero di ko maayos.
Python:
#delete function
def c4():
n = len(arr)
print("\nMAX HEAP AFTER DELETION:")
heap.maxDeleteRoot(arr)
heap.printmaxArray(arr, n)
print("\nMIN HEAP AFTER DELETION:")
heap.minDeleteRoot(arr)
heap.printminArray(arr, n)
Python:
#output
Enter a Command: 4
MAX HEAP AFTER DELETION:
5 9 2 1 4 5
MIN HEAP AFTER DELETION:
5 9 2 1 4 5
Ang balak ko po sana, madelete yung max(9) and min(1) value, pero iba po nangyayari. Thank you po
Python:
#main code
import os
import sys
#maxheap
class heap:
#check nodes so it can arrange them based on values
def max_heapify(arr, i):
left = 2 * i + 1
right = 2 * i + 2
largest = i
if left < len(arr) and arr[left] > arr[largest]:
largest = left
if right < len(arr) and arr[right] > arr[largest]:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heap.max_heapify(arr, largest)
def build_max_heap(arr):
for i in range(len(arr) // 2, -1, -1):
heap.max_heapify(arr, i)
#print maxheap
def printmaxArray(arr, n):
for i in range(n):
print(arr[i], end = ' ')
print()
#delete function
def maxDeleteRoot(arr):
n = len(arr)
maxlastElement = arr[n - 1]
arr[n] = maxlastElement
n -= 1
heap.max_heapify(arr, n)
def exitProgram():
os.system('cls')
print(f"THANK YOU FOR USUNG THE PROGRAM!")
sys.exit()
def tryAgain():
choice = (input("\nAgain(y/n): ").lower())
if choice == 'y':
heap.enterCommand()
elif choice == 'n':
heap.exitProgram()
else:
return f"invalid input"
heap.tryAgain()
# Min heap tree
def min_heapify(arr, k):
left = 2 * k + 1
right = 2 * k + 2
if left < len(arr) and arr[left] < arr[k]:
smallest = left
else:
smallest = k
if right < len(arr) and arr[right] < arr[smallest]:
smallest = right
if smallest != k:
arr[k], arr[smallest] = arr[smallest], arr[k]
heap.min_heapify(arr, smallest)
def printminArray(arr, n):
for i in range(n):
print(arr[i], end = ' ')
print()
def build_min_heap(arr):
n = int((len(arr) // 2)-1)
for k in range(n, -1, -1):
heap.min_heapify(arr, k)
#delete function
def minDeleteRoot(arr):
n = len(arr)
minlastElement = arr[n - 1]
arr[n] = minlastElement
n -= 1
heap.max_heapify(arr, n)
def c4():
n = len(arr)
print("\nMAX HEAP AFTER DELETION:")
heap.maxDeleteRoot(arr)
heap.printmaxArray(arr, n)
print("\nMIN HEAP AFTER DELETION:")
heap.minDeleteRoot(arr)
heap.printminArray(arr, n)
def c6():
n = len(arr)
heap.build_max_heap(arr)
print("MAX HEAP:")
heap.printmaxArray(arr, n)
heap.build_min_heap(arr)
print("\nMINHEAP: ")
heap.printminArray(arr, n)
heap.tryAgain()
#user input function
def enterCommand():
global arr
arr = [3, 9, 2, 1, 4, 5]
command = int(input("\nEnter a Command: "))
if command == 2:
n = len(arr)
key = int(input("Insert Node: "))
heap.insertNode(arr, key)
print()
elif command == 4:
heap.c4()
elif command == 6:
heap.c6()
elif command == 0:
heap.exitProgram()
else:
return f"INVALID INPUT! TRY AGAIN"
heap.enterCommand()
Python:
# choices number 2, 4 and 6 lang po
# driver code
from newopne import *
import time
time.sleep(0.5)
print(" MENU FOR NON-LINER DATA STRUCTURE ")
time.sleep(0.5)
print("=================================================================================================")
print("= <<[0] Exit>> =")
print("= <<ADDING ITEMS>> <<DELETING ITEMS>> <<PRINTING ITEMS>> =")
print("= [1] Add items to BSTREE [3] Delete items from BSTREE [5] Print items from BSTREE =")
print("= [2] Add items to HEAP TREE [4] Delete items from HEAP TREE [6] Print items from HEAP TREE =")
print("=================================================================================================")
time.sleep(0.5)
heap.enterCommand()