예제 #1
0
    def test_find_open_with_empty_aunt(self):
        node17 = HeapNode(17)
        node15 = HeapNode(15)
        node11 = HeapNode(11)
        node6 = HeapNode(6)
        node10 = HeapNode(10)
        node17.left = node15
        node17.right = node11
        node15.left = node6
        node15.right = HeapNode(10)

        heap = Heap(node17)
        self.assertEqual(heap[-1].value, 10)
        self.assertEqual(heap.find_open(), (node11, 'left'))
예제 #2
0
    def test_find_open_with_single_child_aunt(self):
        node17 = HeapNode(17)
        node15 = HeapNode(15)
        node11 = HeapNode(11)
        node6 = HeapNode(6)
        node10 = HeapNode(10)
        node7 = HeapNode(7)
        node17.left = node15
        node17.right = node11
        node15.left = node6
        node15.right = HeapNode(10)
        node11.left = node7

        heap = Heap(node17)
        self.assertEqual(heap[-1].value, 7)
        self.assertEqual(heap.find_open(), (node11, 'right'))
예제 #3
0
def max_heap():

#               17
#             /    \
#          15        10
#         /  \      /
#       6     10   7

    node17 = HeapNode(17)
    node15 = HeapNode(15)
    node10 = HeapNode(10)
    node6 = HeapNode(6)
    node10 = HeapNode(10)
    node7 = HeapNode(7)

    node17.left = node15
    node17.right = node10
    node15.parent, node10.parent = node17, node17
    node15.left = node6
    node15.right = HeapNode(10)
    node6.parent, node15.right.parent = node15, node15
    node10.left = node7
    node7.parent = node10
    return node17