1 package cz.cuni.amis.utils.heap;
2
3 import java.util.Collection;
4 import java.util.Comparator;
5 import java.util.Set;
6
7 /**
8 * Interface for standard Heap (with addition of decreace/increase/changedKey operations).
9 * <p><p>
10 * We also assume that heap will use {@link Comparator} for comparing stored nodes.
11 *
12 * @author Jimmy
13 *
14 * @param <NODE>
15 */
16 public interface IHeap<NODE> extends Collection<NODE> {
17
18 /**
19 * Returns comparator that is used to compare the nodes in the heap.
20 * @return
21 */
22 public Comparator<NODE> getComparator();
23
24 /**
25 * Returns node with min-value from the heap.
26 * @return
27 */
28 public NODE getMin();
29
30 /**
31 * Deletes node with min-value, returns success (true if there was some object in the heap, false if there weren't).
32 * @return success
33 */
34 public boolean deleteMin();
35
36 /**
37 * "node" value has been decreased, bubble it through the heap.
38 * @param node
39 * @return
40 */
41 public boolean decreaseKey(NODE node);
42
43 /**
44 * "node" value has been increased, bubble it through the heap.
45 * @param node
46 * @return
47 */
48 public boolean increaseKey(NODE node);
49
50 /**
51 * "node" value has been changed (not sure if it was increased or decreased), bubble it through the heap.
52 * @param node
53 * @return
54 */
55 public boolean changedKey(NODE node);
56
57 /**
58 * Adds all items from 'items'.
59 * @param items
60 * @return
61 */
62 public boolean addAll(NODE[] items);
63
64 /**
65 * Whether this heap contains all 'items'.
66 * @param items
67 * @return
68 */
69 public boolean containsAll(Object[] items);
70
71 /**
72 * Whether this heap is empty.
73 * @return
74 */
75 public boolean empty();
76
77 /**
78 * Returns this heap as a set.
79 * @return
80 */
81 public Set<NODE> toSet();
82
83 }