Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
185 KB
Nội dung
Cấu trúc dữ liệu và thuật giải 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 Ðị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 Ví dụ: 44 23 88 13 37 59 108 15 30 40 55 71 Cấu trúc dữ liệu và thuật giải 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) – 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) Cấu trúc dữ liệu và thuật giải Tổ chức dữ liệu(tt) typedef struct tagAVLNode { char balFactor; //ch s cân b ngỉ ố ằ Data key; struct tagAVLNode* pLeft; struct tagAVLNode* pRight; }AVLNode; typedef AVLNode *AVLTree; Cấu trúc dữ liệu và thuật giải Các trường hợp mất cân bằng do lệch trái T T1 L1 R1 h h-1 h-1 L R1 T T1 L1 h h-1 L R R h-1 T T1 L1 h h-1 h L R L1 Cấu trúc dữ liệu và thuật giải Các trường hợp mất cân bằng do lệch phải T h-1 R1 T1 h h R L L1 T T1 L1 R1 h h-1 R T R1 T1 L1 h h-1 R L h-1 L h-1 Cấu trúc dữ liệu và thuật giải 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 – 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 Cấu trúc dữ liệu và thuật giải 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 T1 L1 R1 h h-1 h-1 L R T1 T L1 R1 h h-1 R h-1 Cấu trúc dữ liệu và thuật giải 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 T1 L1 h-1 h L R T1 T L1 h R h-1 R1 R1 h Cấu trúc dữ liệu và thuật giải 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ệ ủ ệ ả h T T1 L1 h-1 R1 R h-1 T2 L2 R2 TT1 L1 h-1 R h-1 T2 L2 R2 [...]... 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 – 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 Cấu trúc dữ liệu và thuật giải 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. .. 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 Cấu trúc dữ liệu và thuật giải T h-1 T1 T1 R h-1 R1 L1 L1 T L h h-1 R R1 h-1 h 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 Cấu trúc dữ liệu và thuật giải T h-1 T1 T1 R h R1 L1 L1 T L h h-1 R R1 h h Các trường hợp mất cân bằng do lệch iphảia T lệch trái 1 3 Cây T lệch phải, cây. .. thuật giải 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 – 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 . giải 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 Ðị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. giải 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. 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 Cấu trúc dữ