Skip to content

Latest commit

 

History

History
 
 

Cây Heap (Cấu trúc dữ liệu)

Bạn có thể đọc bản dịch bằng các ngôn ngữ khác: English

Trong khoa học máy tính, một cây heap là một cấu trúc dữ liệu dựa trên cây đặc biệt được thiết kế để thỏa mãn thuộc tính cây heap mô tả dưới đây.

Trong một heap tối thiểu, nếu P là một nút cha của C, thì khóa (giá trị) của P phải nhỏ hơn hoặc bằng khóa của C.

MinHeap

Tạo với okso.app

Trong một heap tối đa, khóa của P phải lớn hơn hoặc bằng khóa của C.

MaxHeap

Nút ở "đỉnh" của heap mà không có nút cha được gọi là nút gốc.

Phức Tạp Thời Gian

Dưới đây là phức tạp thời gian của các cấu trúc dữ liệu heap khác nhau. Tên hàm giả sử một heap tối đa.

Hoạt Động tìm-max xóa-max chèn tăng-khóa hợp
Nhị Phân Θ(1) Θ(log n) O(log n) O(log n) Θ(n)
Leftist Θ(1) Θ(log n) Θ(log n) O(log n) Θ(log n)
Hình thái nhị phân Θ(1) Θ(log n) Θ(1) O(log n) O(log n)
Hình thái Fibonacci Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
Hình thái Pairing Θ(1) Θ(log n) Θ(1) o(log n) Θ(1)
Brodal Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
Xếp hạng-Pairing Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
Fibonacci nghiêm ngặt Θ(1) Θ(log n) Θ(1) Θ(1) Θ(1)
2-3 heap O(log n) O(log n) O(log n) Θ(1) ?

Trong đó:

  • tìm-max (hoặc tìm-min): tìm một phần tử tối đa của heap tối đa hoặc một phần tử tối thiểu của heap tối thiểu, tương ứng (còn được gọi là đỉnh)
  • xóa-max (hoặc xóa-min): loại bỏ nút gốc của heap tối đa (hoặc heap tối thiểu), tương ứng
  • chèn: thêm một khóa mới vào heap (còn được gọi là đẩy)
  • tăng-khóa hoặc giảm-khóa: cập nhật một khóa trong heap tối đa hoặc tối thiểu, tương ứng
  • hợp: kết hợp hai heap để tạo ra một heap mới hợp lệ chứa tất cả các phần tử của cả hai, phá hủy các heap gốc.

Trong kho lưu trữ này, MaxHeap.jsMinHeap.js là các ví dụ về heap Nhị phân.

Cài Đặt

  • MaxHeap.jsMinHeap.js
  • MaxHeapAdhoc.jsMinHeapAdhoc.js - Phiên bản tối giản (tùy ý) của cấu trúc dữ liệu MinHeap/MaxHeap không có các phụ thuộc bên ngoài và dễ dàng sao chép và sử dụng trong quá trình phỏng vấn lập trình nếu được phép bởi người phỏng vấn (vì nhiều cấu trúc dữ liệu trong JS thiếu).

Tham Khảo