Skip to content

Commit a49294d

Browse files
Create Max_Heap_Priority_Queue.java
1 parent 4197a54 commit a49294d

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

Diff for: Max_Heap_Priority_Queue.java

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
class MaxHeap {
5+
private List<Integer> heap;
6+
7+
public MaxHeap() {
8+
heap = new ArrayList<>();
9+
}
10+
11+
private void heapify(int n, int i) {
12+
int largest = i;
13+
int leftChild = 2 * i + 1;
14+
int rightChild = 2 * i + 2;
15+
16+
if (leftChild < n && heap.get(i) < heap.get(leftChild)) {
17+
largest = leftChild;
18+
}
19+
20+
if (rightChild < n && heap.get(largest) < heap.get(rightChild)) {
21+
largest = rightChild;
22+
}
23+
24+
if (largest != i) {
25+
int temp = heap.get(i);
26+
heap.set(i, heap.get(largest));
27+
heap.set(largest, temp);
28+
heapify(n, largest);
29+
}
30+
}
31+
32+
public void insert(int newNum) {
33+
int size = heap.size();
34+
if (size == 0) {
35+
heap.add(newNum);
36+
} else {
37+
heap.add(newNum);
38+
for (int i = (size / 2) - 1; i >= 0; i--) {
39+
heapify(size, i);
40+
}
41+
}
42+
}
43+
44+
public void deleteNode(int num) {
45+
int size = heap.size();
46+
int i;
47+
for (i = 0; i < size; i++) {
48+
if (num == heap.get(i)) {
49+
break;
50+
}
51+
}
52+
53+
int temp = heap.get(i);
54+
heap.set(i, heap.get(size - 1));
55+
heap.set(size - 1, temp);
56+
heap.remove(size - 1);
57+
58+
for (i = (heap.size() / 2) - 1; i >= 0; i--) {
59+
heapify(heap.size(), i);
60+
}
61+
}
62+
63+
public void printHeap() {
64+
System.out.println("Max-Heap array: " + heap);
65+
}
66+
}
67+
68+
public class Main {
69+
public static void main(String[] args) {
70+
MaxHeap maxHeap = new MaxHeap();
71+
maxHeap.insert(3);
72+
maxHeap.insert(4);
73+
maxHeap.insert(9);
74+
maxHeap.insert(5);
75+
maxHeap.insert(2);
76+
77+
maxHeap.printHeap();
78+
79+
maxHeap.deleteNode(4);
80+
maxHeap.printHeap();
81+
}
82+
}

0 commit comments

Comments
 (0)