CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 8: CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG
lượt xem 11
download
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 . 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)
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 8: CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG
- CCẤẤUUTRÚC UUVÀ GI THU ẢI ITHU TT11 trúcDDdỮỮ Cấu TRÚC ữLILIliỆỆệ uVÀvàGIẢthu gi ậtẬẬ ải Click To Edit 1 NỘMaster CÂY NHỊ PHÂN TÌM KIẾM CÂN BẰNG I DUNGTitle Style
- Click Ðịnh To Edit Master Title Style 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 ải TT11 Ví dụ: 23 88 uVÀvà UUVÀ GIẢthu GI THU ẢI ITHU gi ậtẬẬ 13 37 59 108 Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ 15 30 40 55 71 2
- Tổ Click chức dTo ữ liEdit ệu Master Title Style 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) ải TT11 CSCB(p) = 1 ⇔ Độ cao cây trái (p) < Độ cao THU ẢI ITHU gi ậtẬẬ cây phải (p) GIẢthu CSCB(p) = -1 ⇔ Độ cao cây trái (p) > Độ GI uVÀvà UUVÀ cao cây phải (p) Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ 3
- Tổ Click chức dTo ữ liEdit ệu(tt)Master Title Style #define LH -1 //cây con trái cao hơn #define EH 0 //cây con trái bằng cây con phải #define RH 1 //cây con phải cao hơn typedef struct tagAVLNode { char balFactor; //chỉ số cân bằng gi ậtẬẬ THU ải TT11 Data key; ẢI ITHU GIẢthu struct tagAVLNode* pLeft; GI uVÀvà UUVÀ struct tagAVLNode* pRight; ữLILIliỆỆệ }AVLNode; trúcDDdỮỮ Cấu TRÚC CCẤẤUUTRÚC typedef AVLNode *AVLTree; 4
- CácClick trườngTo hợEdit p mấMaster Title t cân bằng Style do lệch trái Cây mất cân bằng tại nút T TH1: Left-Left T TH2: Left-Right T T1 R T1 R ậtẬẬ THU ẢI ITHU GIẢthu ải TT11 gi L1 R1 GI uVÀvà L1 T2 UUVÀ Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ L21 R21 5
- CácClick trườngTo hợEdit p mấMaster Title t cân bằng Style do lệch phải Cây mất cân bằng tại nút T TH3: Right-Right TH4: Right-Left T T L L T1 ải TT11 T1 GI uVÀvà ẢI ITHU GIẢthu gi ậtẬẬ THU T2 R1 UUVÀ L1 R1 Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ L21 R21 6
- CácClick thao To tác Edit Master trên cây cân Title bằng Style 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 gi ậtẬẬ ải TT11 Lệch nhánh phải, thêm bên phải THU ẢI ITHU GIẢthu Lệch nhánh trái, hủy bên phải GI uVÀvà UUVÀ Lệch nhánh phải, hủy bên trái ữLILIliỆỆệ Cân bằng lại cây : tìm cách bố trí lại cây sao cho trúcDDdỮỮ chiều cao 2 cây con cân đối: Cấu TRÚC CCẤẤUUTRÚC Kéo nhánh cao bù cho nhánh thấp 7
- CCẤẤUUTRÚC UUVÀ GI THU ẢI ITHU TT11 trúcDDdỮỮ Cấu TRÚC ữLILIliỆỆệ uVÀvàGIẢthu gi ậtẬẬ ải L1 T1 CânClick R1 T bằngTo lạiEdit R 8 trường L1 Master T1 R1 T hợp 1Title Style R
- CàiClick TobEdit đặt cân ằng Master lại cho trTitle ườngStyle hợp 1 void LL(AVLTree &T) { AVLNode *T1=T->pLeft; T->pLeft = T1->pRight; T1->pRight=T; switch(T1-> balFactor) gi ậtẬẬ ải TT11 { case LH: T-> balFactor =EH; THU ẢI ITHU GIẢthu T1->balFactor=EH; break; GI uVÀvà case EH: T->balFactor=LH; UUVÀ ữLILIliỆỆệ T1->balFactor =RH; break; trúcDDdỮỮ } Cấu TRÚC CCẤẤUUTRÚC T=T1; } 9
- CânClick bằngTo lạiEdit Master trường hợp 2Title Style T T2 T1 R T1 T ải TT11 gi T2 ậtẬẬ L1 THU L21 R21 R ẢI ITHU L1 uVÀvà UUVÀ GIẢthu GI L21 R21 Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ 10
- CàiClick TobEdit đặt cân ằng Master lại cho trTitle ườngStyle hợp 2 void LR(AVLTree &T) { AVLNode *T1=T->pLeft; AVLNode *T2=T1->pRight; T->pLeft=T2->pRight; T2->pRight=T; T1->pRight= T2->pLeft; T2->pLeft = T1; ải TT11 gi switch(T2->balFactor) ậtẬẬ THU ẢI ITHU { case LH: T->balFactor=RH; GIẢthu T1->balFactor=EH; break; GI uVÀvà UUVÀ case EH: T->balFactor = EH; ữLILIliỆỆệ T1->balFactor=EH; break; trúcDDdỮỮ case RH: T->balFactor =EH; Cấu TRÚC CCẤẤUUTRÚC T1->balFactor= LH; break; }T2->balFactor =EH; T=T2 11 }
- CCẤẤUUTRÚC UUVÀ GI THU ẢI ITHU TT11 trúcDDdỮỮ Cấu TRÚC ữLILIliỆỆệ uVÀvàGIẢthu gi ậtẬẬ ải L T L1 CânClick T1 bằngTo R1 lạiEdit 12 L trường T Master L1 T1 R1 hợp 3Title Style
- CàiClick TobEdit đặt cân ằng Master lại cho trTitle ườngStyle hợp 3 void RR(AVLTree &T) { AVLNode *T1= T->pRight; T->pRight=T1->pLeft; T1->pLeft=T; switch(T1-> balFactor) { gi ậtẬẬ ải TT11 case RH: T-> balFactor = EH; THU ẢI ITHU GIẢthu T-> balFactor = EH; break; GI uVÀvà case EH: T-> balFactor = RH; UUVÀ ữLILIliỆỆệ T1-> balFactor = LH; break; trúcDDdỮỮ } Cấu TRÚC CCẤẤUUTRÚC T=T1 } 13
- CânClick bằngTo lạiEdit Master trường hợp 4Title Style T T2 L T1 T T1 ải TT11 T2 R1 gi ậtẬẬ R1 THU L L21 R21 GI uVÀvà UUVÀ ẢI ITHU GIẢthu L21 R21 Cấu TRÚC CCẤẤUUTRÚC ữLILIliỆỆệ trúcDDdỮỮ 14
- CàiClick TobEdit đặt cân ằng Master lại cho trTitle ườngStyle hợp 4 void RR(AVLTree &T) { AVLNode *T1= T->pRight; AVLNode *T2=T1->pLeft; T->pRight = T2->pLeft; T2->pLeft = T; T1->pLeft = T2->pRight; T2->pRight = T1; ải TT11 switch(T2-> balFactor) gi ậtẬẬ THU { case RH: T-> balFactor = LH; ẢI ITHU GIẢthu T1-> balFactor = EH; break; GI uVÀvà case EH: T-> balFactor = EH; UUVÀ T1-> balFactor = EH; break; ữLILIliỆỆệ case LH: T-> balFactor = EH; trúcDDdỮỮ T1-> balFactor = RH; break; Cấu TRÚC CCẤẤUUTRÚC } T2-> balFactor =EH; T=T2;} 15
- Click Thêm To Edit Master Title Style 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 gi ậtẬẬ THU ải TT11 Tiến hành cân bằng lại nút đó bằng thao tác cân ẢI ITHU GIẢthu bằng thích hợp GI uVÀvà UUVÀ ữLILIliỆỆệ Việc cân bằng lại chỉ cần thực hiện 1 lần nơi mất trúcDDdỮỮ cân bằng Cấu TRÚC CCẤẤUUTRÚC 16
- HủyClick 1 nútTo Edit Master Title Style 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 ải TT11 Tiến hành cân bằng lại nút đó bằng thao tác cân THU ẢI ITHU gi ậtẬẬ bằng thích hợp GIẢthu GI uVÀvà Tiếp tục lần ngược lên nút cha… UUVÀ ữLILIliỆỆệ trúcDDdỮỮ Việc cân bằng lại co thể lan truyền lên tận Cấu TRÚC CCẤẤUUTRÚC gốc 17
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình cấu trúc dữ liệu và giải thuât part 1
16 p | 825 | 365
-
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 p | 551 | 286
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 175 | 17
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Các khái niệm cơ bản về Cấu trúc dữ liệu và giải thuật
20 p | 46 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 59 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 160 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Đắk Lắk
60 p | 45 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Ngành: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng Xây dựng số 1
77 p | 12 | 5
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Chương 1: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 67 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Một số khái niệm cơ bản về cấu trúc dữ liệu và giải thuật
12 p | 91 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Tổng quan - Nguyễn Đức Cương
6 p | 100 | 4
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Công nghệ thông tin - Trung cấp) - Trường Trung cấp Công nghệ và Du lịch Hà Nội
59 p | 15 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Cấu trúc dữ liệu và giải thuật
42 p | 55 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Ngô Quang Thạch
49 p | 63 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn