더북(TheBook)

코드 11-4는 pop() 메서드를 구현한 것입니다. 루트에 있는 키를 반환하고 빈 루트에 트리의 맨 마지막 원소를 임시로 올립니다. 자식 노드의 키 값과 비교하며 자신의 위치를 찾아갑니다. 알고리즘의 작동 방식을 그림과 비교해 보시기 바랍니다.

이제 테스트 코드로 잘 작동하는지 확인해 보겠습니다.

코드 11-5

# 힙 내부에 있는 arr을
# 직접 확인하는 함수
def print_heap(h):
    for i in range(1, h.heapsize+1):
        print("{}".format(h.arr[i].key), end=" ")
    print()

if __name__ == "__main__":
    h = MaxHeap()

    h.push(Element(2))
    h.push(Element(14))
    h.push(Element(9))
    h.push(Element(11))
    h.push(Element(6))
    h.push(Element(8))

    print_heap(h)

    while not h.is_empty():
        rem = h.pop()
        print(f"poped item is {rem.key}")
        print_heap(h)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.