Binary Heap Implemented via a Binary Tree Structure

后端 未结 2 1108
借酒劲吻你
借酒劲吻你 2020-12-18 14:56

For an assignment, we were instructed to create a priority queue implemented via a binary heap, without using any built-in classes, and I have done so successfully by using

2条回答
  •  抹茶落季
    2020-12-18 15:27

    A tree implementation of a binary heap uses a complete tree [or almost full tree: every level is full, except the deepest one].
    You always 'know' which is the last occupied leaf - where you delete from [and modifying it is O(logn) after it changed so it is not a problem], and you always 'know' which is the first non-occupied leaf, in which you add elements to [and again, modifying it is also O(logn) after it changed].

    The algorithm idea is simple:
    insert: insert element to the first non-occupied leaf, and use heapify [sift up] to get this element to its correct place in the heap.

    delete_min: replace the first element with the last occupied leaf, and remove the last occupied leaf. then, heapify [sift down] the heap.

    EDIT: note that delete() can be done to any element, and not only the head, however - finding the element you want to replace with the last leaf will be O(n), which will make this op expensive. for this reason, the delete() method [besides the head], is usually not a part of the heap data structure.

提交回复
热议问题