1 .GIỚI THIỆU
6. CẤU TRÚC CÂY
6.4 | CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG
6.4.4 Cân bằng lại cây AVL
Ta sẽ khơng khảo sát tính cân bằng của 1 cây nhị phân bất kỳ mà chỉ quan tâm đến các khả năng mất cân bằng xảy ra khi thêm hoặc hủy một nút trên cây AVL.
Như vậy, khi mất cân bằng, độ lệch chiều cao giữa 2 cây con sẽ là 2. Ta có 2 trường hợp (6 khả năng) sau:
140
Trường hợp 2: cây T lệch về bên phải Ta có các khả năng sau:
Ta có thể thấy rằng các trường hợp lệch về bên phải hoàn toàn đối xứng với các trường hợp lệch về bên trái. Vì vậy ta chỉ cần khảo sát trường hợp lệch về bên trái. Trong 3
141
trường hợp lệch về bên trái, trường hợp T1 lệch phải là phức tạp nhất. Các trường hợp còn lại giải quyết rất đơn giản.
Sau đây, ta sẽ khảo sát và giải quyết từng trường hợp nêu trên.
Trường hợp 1.1: cây T1 lệch về bên trái. Ta thực hiện phép quay đơn Left-Left
Trường hợp 1.2: cây T1 không lệch. Ta thực hiện phép quay đơn Left-Left
Trường hợp 1.3: cây T1 lệch về bên phải. Ta thực hiện phép quay kép Left-Right
Do T1 lệch về bên phải ta không thể áp dụng phép quay đơn đã áp dụng trong 2 trường hợp trên vì khi đó cây T sẽ chuyển từ trạng thái mất cân bằng do lệch trái thành mất cân bằng do lệch phải, cần áp dụng cách khác.
142
Với những xem xét trên, xét tương tự cho trường hợp cây T lệch về bên phải. Thao tác cân bằng lại trong tất cả các trường hợp đều có độ phức tạp O(1).
BÀI TẬP
1. Trình bày khái niệm về cây, cây nhị phân, cây nhị phân tìm kiếm và cây nhị phân cân bằng.
2. Trình bày cấu trúc dữ liệu của một node trong cây nhị phân
3. Trình bày cấu trúc dữ liệu của một node trong cây nhị phân tìm kiếm cân bằng 4. Cho cây tổng quát biểu diễn sơ đồ tổ chức trong công ty như sau:
Hãy biểu diễn cây này thành cây nhị phân để có thể cài đặt được trong máy tính.
143
Cho biết kết quả của các phép duyệt cây theo thứ tự NLR, LRN, LNR.
6. Cho biết cây kết quả sau khi thêm nút có key = 55 vào cây
144
Hãy vẽ cây trong các trường hợp sau: f. Sau khi xóa nút có key = 108 g. Sau khi xóa nút có key = 71 h. Sau khi xóa nút có key = 37
8. Cho cây nhị phân tìm kiếm cân bằng sau:
145
b. Thêm vào cây trên nút có khóa key = 80. Sau khi thêm vào cây có bị mất cân bằng khơng? Tại sao? Nếu có hãy cân bằng lại cây.
c. Thêm vào cây trên nút có khóa key = 52. Sau khi thêm vào cây có bị mất cân bằng khơng? Tại sao? Nếu có hãy cân bằng lại cây.
146
TÀI LIỆU THAM KHẢO
[1] Narasimha Karumanchi, Data Structures And Algorithms Made Easy, 2017. [2] Nguyễn Đình Hóa, Cấu trúc dữ liệu và Giải thuật, Đại học quốc gia Hà nội, 2008.
Một số website
http://www.cplusplus.com