Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 2
- def heapify(value, heap1, heap2):
- try:
- value1, size1, depth1 = next(heap1)
- except StopIteration:
- value1, size1, depth1 = 999999999, 0, 0
- try:
- value2, size2, depth2 = next(heap2)
- except StopIteration:
- value2, size2, depth2 = 999999999, 0, 0
- size = size1 + size2 + 1
- depth = max(depth1, depth2) + 1
- if size > 0:
- if value < value1 and value < value2:
- print(f'case 1: ({value}, {size}, {depth})')
- yield (value, size, depth)
- yield heapify(value1, safely_next(heap1), safely_next(heap1))
- yield heapify(value2, safely_next(heap2), safely_next(heap2))
- return
- if value1 < value and value1 < value2 and size1 > 0:
- print(f'case 2: ({value1}, {size}, {depth})')
- yield (value1, size, depth)
- yield heapify(value, safely_next(heap1), safely_next(heap1))
- yield heapify(value2, safely_next(heap2), safely_next(heap2))
- return
- if value2 <= value and value2 <= value1 and size2 > 0:
- print(f'case 3: ({value2}, {size}, {depth})')
- yield (value2, size, depth)
- yield heapify(value1, safely_next(heap1), safely_next(heap1))
- yield heapify(value, safely_next(heap2), safely_next(heap2))
- return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement