Để làm quen với kiểu dữ liệu Heap, chúng ta có thể biểu diễn kiểu dữ liệu Heap theo một cây nhị phân. Ta có thể biểu diễn theo hai kiểu như sau
Kiểu 1 [Max-Heap]. Các nút cha luôn có giá trị lớn hơn các nút con
Kiểu 2 [Min-Heap]. Các nút cha luôn có giá trị nhỏ hơn các nút con
Kiểu biểu diễn thứ hai, quan sát cây nhị phân với kiểu dữ liệu Heap, ta có một số đặc điểm như sau
- Giá trị nhỏ nhất trong cây là 10, được gọi là giá trị gốc
- Các nút cha luôn có giá trị nhỏ hơn các nút con
- If sắp xếp theo thứ tự từ trên xuống dưới, từ trái sang phải thì ta có dãy giá trị [10, 14, 19, 26, 31, 42, 27, 44, 35, 33] [đặt tên là đống, với phần . Khi đó, tại heap[i], chỉ số của phần tử con bên trái tương ứng là heap[2i+1], phần tử con bên trái phải là heap[2i+2]. Tương ta cũng chỉ có phần tử ứng dụng của heap[i] is heap[[i-1]/2]. [Lưu ý ở trên tương ứng với phần tử đầu tiên mang số 0, nếu coi phần tử đầu tiên chỉ là số 1 thì hai phần tử con và phần tử cha của heap[i] lần cuối cùng. đống[2i], đống[2i+1], đống[i/2]]
2. Cài đặt
Ví dụ về cài đặt Min-Heap
void min_heap[int A[], int i] {
// Chỉ số của phần tử nhỏ nhất trong bộ ba: nút hiện tại, nút con bên trái, và nút con bên phải của nó
int smallest;
int left = 2 * i; // Vị trí của nút con bên trái
int right = 2 * i + 1; // Vị trí của nút con bên phải
if [left