intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG

Chia sẻ: Le Van Hiep Anh Hiệp | Ngày: | Loại File: PPT | Số trang:15

381
lượt xem
52
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cây nhị phân tìm kiếm cân bằng là cây mà tại mỗi nút của nó độ cao của cây con trái và của cây con...

Chủ đề:
Lưu

Nội dung Text: CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG

  1. NỘI DUNG CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG Cấu trúc dữ liệu và thuật giải
  2. Ðịnh nghĩa  Cây nhị phân tìm kiếm cân bằng là cây mà tại mỗi nút của nó độ cao của cây con trái và của cây con phải chênh lệch không quá một 44 Cấu trúc dữ liệu và thuật giải Ví dụ: 23 88 59 108 13 37 15 30 40 55 71
  3. Tổ chức dữ liệu • Chỉ số cân bằng = độ lệch giữa cây trái và cây phải của một nút • Các giá trị hợp lệ : ⇔ – CSCB( p) = 0 Độ cao cây trái ( p) = Độ cao cây phải ( p) Cấu trúc dữ liệu và thuật giải ⇔ – CSCB( p) = 1 Độ cao cây trái ( p) < Độ cao cây phải ( p) ⇔ – CSCB( p) = -1 Độ cao cây trái ( p) > Độ cao cây phải ( p)
  4. Tổ chức dữ liệu(tt) typedef struct tagAVLNode { balFactor; //chỉ số cân bằng char Data key; struct tagAVLNode* pLeft; struct tagAVLNode* pRight; Cấu trúc dữ liệu và thuật giải }AVLNode; typedef AVLNode*AVLTree;
  5. Các trường hợp mất cân bằng do lệch trái T T LT LT h-1 h-1 R R 1 1 h-1 h h-1 h R L L1 R1 Cấu trúc dữ liệu và thuật giải 1 1 T LT h-1 R 1 h h L1 L1
  6. Các trường hợp mất cân bằng do lệch phải T T RT RT h-1 h-1 L L 1 1 h-1 h-1 h h L R R1 L1 Cấu trúc dữ liệu và thuật giải T 1 1 RT h-1 L 1 h h L1 R1
  7. Các thao tác trên cây cân bằng Khi thêm hay xoá 1 nút trên cây, cĩ thể làm cho cây mất tính cân bằng, khi ấy ta phải tiến hành cân bằng lại. • Cây có khả năng mất cân bằng khi thay đổi chiều cao: – Lệch nhánh trái, thêm bên trái – Lệch nhánh phải, thêm bên phải Cấu trúc dữ liệu và thuật giải – Lệch nhánh trái, hủy bên phải – Lệch nhánh phải, hủy bên trái • Cân bằng lại cây : tìm cách bố trí lại cây sao cho chiều cao 2 cây con cân đối: – Kéo nhánh cao bù cho nhánh th ấp – Phải bảo đảm cây vẫn là Nhị phân tìm kiếm
  8. Các trường hợp mất cân bằng do lệch trái 1 .1 Cây T lệch trái, cây trái T1 của T cũng lệch trái T T 1 T L T Cấu trúc dữ liệu và thuật giải h-1 h 1 R L1 h-1 h h-1 R1 h-1 R1 R L1
  9. Các trường hợp mất cân bằng do lệch trái 1 . 2 Cây T lệch trái, cây trái T1 của T không lệch T T 1 Cấu trúc dữ liệu và thuật giải T L T h-1 h 1 R L1 h h h-1 R L1 R1 R1
  10. Các trường hợp mất cân bằng do lệch trái 1 . 3 Cây T lệch trái, cây trái T1 của T lệch phải T T2 T1 h-1 Cấu trúc dữ liệu và thuật giải R T1 T T2 h-1 R1 L1 h-1 h-1 h L1 L2 R2 R L2 R2
  11. Các trường hợp mất cân bằng do lệch phải 1 .1 Cây T lệch phải, cây phải T1 của T cũng lệch phải T T 1 T L T Cấu trúc dữ liệu và thuật giải h-1 h 1 R L1 h-1 h h-1 R1 h-1 R1 R L1
  12. Các trường hợp mất cân bằng do lệch phải 1 . 2 Cây T lệch phải, cây phải T1 của T không lệch T T 1 T L T Cấu trúc dữ liệu và thuật giải h-1 h 1 R L1 h h h h-1 R R1 L1 R1
  13. Các trường hợp mất cân bằng do lệchcây phiải T1 của T lệch phả 1 . 3 Cây T lệch phải, trái T2 T T T1 T1 h-1 Cấu trúc dữ liệu và thuật giải R T2 h-1 h-1 h-1 R1 L1 R R2 L2 L1 h R2 L2
  14. Thêm 1 nút • Thêm bình thường như trường hợp cây NPTK • Nếu cây tăng trưởng chiều cao: – Lần ngược về gốc để phát hiện nút bị mất cân bằng Cấu trúc dữ liệu và thuật giải – Tiến hành cân bằng lại nút đó bằng thao tác cân bằng thích hợp • Việc cân bằng lại chỉ cần thực hiện 1 lần tại nơi mất cân bằng
  15. Hủy 1 nút • Hủy bình thường như trường hợp cây NPTK • Nếu cây giảm chiều cao: – Lần ngược về gốc để phát hiện nút bị mất cân bằng – Tiến hành cân bằng lại nút đó bằng thao tác cân bằng thích hợp Cấu trúc dữ liệu và thuật giải – Tiếp tục lần ngược lên nút cha… • Việc cân bằng lại co thể lan truyền lên tận gốc
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2