Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
0,99 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN HỌC lu KHÓA LUẬN TỐT NGHIỆP an n va p ie gh tn to Đề tài: d oa nl w CẤU TRÚC DỮ LIỆU CÂY ĐỎ ĐEN VÀ MÔ PHỎNG ll u nf va an lu oi m z at nh z gm @ : PGS.TSKH Trần Quốc Chiến : Phan Thị Như Ngọc : 08SPT m co l Giáo viên hướng dẫn Sinh viên thực Lớp an Lu n va Đà Nẵng - 5/ 2012 ac th si LỜI CẢM ƠN Trước trình bày đề tài, em xin bày tỏ lòng biết ơn chân thành đến tất thầy cô khoa Tin học, đặc biệt PGS TSKH Trần Quốc Chiến thời gian qua tận tâm giảng dạy, hướng dẫn tạo điều kiện lu thuận lợi để em hoàn thành đề tài an n va Em xin thành thật cảm ơn người thân, tn to bạn bè động viên, giúp đỡ thời gian xây dựng Chân thành cảm ơn!! p ie gh đề tài nl w d oa Sinh viên thực ll u nf va an lu Phan Thị Như Ngọc oi m z at nh z m co l gm @ an Lu n va ac th si Ý KIẾN ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN lu an va n gh tn to p ie nl w d oa an lu Đà Nẵng, ngày tháng năm 2012 va ll u nf Giáo viên hướng dẫn oi m z at nh PGS-TSKH Trần Quốc Chiến z m co l gm @ an Lu n va ac th si MỤC LỤC LỜI CẢM ƠN Ý KIẾN ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN MỤC LỤC LỜI MỞ ĐẦU I LÍ DO CHỌN ĐỀ TÀI: II MỤC TIÊU NHIỆM VỤ: III PHƯƠNG PHÁP NGHIÊN CỨU: lu IV BỐ CỤC CỦA ĐỀ TÀI: an CHƯƠNG I: TỔNG QUAN VỀ CẤU TRÚC CÂY 10 va I CẤU TRÚC CÂY: 10 n SƠ ĐỒ CẤU TRÚC CÂY: 11 ỨNG DỤNG CẤU TRÚC CÂY: 12 p ie gh tn to ĐỊNH NGHĨA VÀ CÁC KHÁI NIỆM VỀ CÂY: 10 MỘT SỐ VÍ DỤ VỀ ĐỐI TƯỢNG CÁC CẤU TRÚC DẠNG CÂY: 12 nl w 4.1 Sơ đồ tổ chức công ty: 12 d oa 4.2 Mục lục sách: 13 lu 4.3 Biểu diễn biểu thức số học dạng cây: x + y * (z - t) + u / v 13 va an NHẬN XÉT: 14 u nf II TÌM HIỂU CÂY NHỊ PHÂN : 14 ll ĐỊNH NGHĨA : 14 oi m MỘT SỐ DẠNG ĐẶC BIỆT CỦA CÂY NHỊ PHÂN : 14 z at nh TÍNH CHẤT : 16 CHƯƠNG II: CÂY NHỊ PHÂN TÌM KIẾM 17 z I MỘT SỐ KHÁI NIỆM: 17 @ gm II SƠ ĐỒ CÂY NHỊ PHÂN TÌM KIẾM: 17 l III CẤU TRÚC DỮ LIỆU: 18 m co IV CÁC THAO TÁC TRÊN CÂY NHỊ PHÂN TÌM KIẾM: 18 Khởi tạo Binary Search Tree: 18 an Lu 1.1 Khởi tạo Binary Search Tree: 18 n va ac th si 1.2 Tạo Node: 18 1.3 Tạo nhị phân tìm kiếm: 19 Duyệt nhị phân tìm kiếm: 20 2.1 Duyệt theo thứ tự trước (Node - Left - Right): 20 2.2 Duyệt theo thứ tự (Left - Node - Right): 21 2.3 Duyệt theo thứ tự sau (Left - Right - Node): 21 Tìm phần tử x cây: 22 Giải thuật tìm kiếm: 22 Nhận xét: 22 3.1 Tìm theo đệ quy: 24 lu an 3.2 Tìm theo khơng đệ quy: 25 va 3.3 Thêm nút vào Binary Search Tree: 25 n 3.4 Nhận xét: 27 to gh tn Hủy phần tử có khóa X: 27 4.1 Trường hợp 1: X nút 27 p ie 4.2 Trường hợp 2: X có (bên trái bên phải) 28 w 4.3 Trường hợp 3: X có đủ hai 29 oa nl Hủy toàn nhị phân tìm kiếm: 32 d V NHẬN XÉT: 33 lu an CHƯƠNG III: CÂY ĐỎ ĐEN 34 u nf va I GIỚI THIỆU: 34 II ĐỊNH NGHĨA: 34 ll oi m III TÍNH CHẤT: 35 z at nh IV THUẬN LỢI KHI SỬ DỤNG: 36 V CẤU TRÚC CÂY ĐỎ ĐEN: 38 Cấu trúc lưu trữ: 38 z gm @ Khai báo đỏ đen: 38 VI CÁC THUẬT TOÁN CƠ BẢN CỦA BLACK AND RED TREE: 39 l Phép quay: 39 m co Thêm node mới: 39 an Lu 2.1 Các phép lật màu đường xuống: 41 2.2 Các phép quay chèn node: 42 n va ac th si 2.3 Các thao tác khôi phục cây: 49 2.4 Các trường hợp vi phạm chính: 50 2.4.1 Trường hợp 1: 50 2.4.2 Trường hợp 2: 51 2.4.3 Trường hợp 3: 52 2.5 Nhận xét chèn: 53 2.6 Code: 54 Xóa node: 57 3.1 Trường hợp 1: 58 3.2 Trường hợp 2: 58 lu an 3.3 Trường hợp 3: 59 va 3.4 Trường hợp 4: 59 n Tìm kiếm: 61 Vài nét ngôn ngữ Java: 64 ie gh tn to I GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH: 64 p Một số đặc điểm ngôn ngữ Java: 64 w Giới thiệu ứng dụng Java vào chương trình đỏ đen: 65 oa nl II DEMO CHƯƠNG TRÌNH: 66 d KẾT LUẬN 68 lu ll u nf va an TÀI LIỆU THAM KHẢO 69 oi m z at nh z m co l gm @ an Lu n va ac th si LỜI MỞ ĐẦU I LÍ DO CHỌN ĐỀ TÀI: Trong khoa học máy tính, cấu trúc liệu cách lưu liệu máy tính cho sử dụng cách hiệu Một cấu trúc liệu thiết kế tốt cho phép thực nhiều phép tốn, sử dụng tài ngun, thời gian xử lý không gian nhớ tốt Chúng ta biết việc tìm kiếm địi hỏi thường xuyên đời sống ngày xử lý Tin học Vấn đề tìm kiếm lu xét cách tổng qt, hiểu tìm đối tượng thỏa mãn số an va đòi hỏi đó, tập rộng lớn đối tượng Khi khơng liên quan n đến mục đích xử lý cụ thể khác, tốn tìm kiếm phát gh tn to biểu độc lập tổng quát sau: p ie “Cho bảng gồm n ghi R1, R2,…, Rn Mỗi ghi Ri (1≤i≤n) tương ứng với khóa ki Hãy tìm ghi có giá trị khóa tương ứng oa nl w X cho trước” d X gọi khóa tìm kiếm Cơng việc tìm kiếm hồn lu va an thành có hai tình sau xảy ra: u nf Tìm ghi có giá trị khóa tương ứng X, lúc ll ta nói phép tìm kiếm thành cơng (successfull) m oi Khơng tìm thấy ghi có giá trị khóa X z at nh Phép tìm kiếm khơng thành cơng (unsuccessfull) Sau phép tìm kiếm khơng thỏa có xuất u cầu bổ sung thêm ghi có khóa z thuật “tìm kiếm có bổ sung” l gm @ X vào bảng Giải thuật thể yêu cầu gọi giải m co Có nhiều phương pháp tìm kiếm thơng dụng, an Lu liệu nhớ tìm kiếm trong, liệu nhớ tìm kiếm ngồi Đối với tìm kiếm trong, tìm kiếm nhị phân phương pháp n va ac th si tìm kiếm thơng dụng, chi phí ít, đạt kết tốt Tuy nhiên sử dụng tìm kiếm nhị phân dãy khoá phải xếp rồi, nghĩa thời gian chi phí cho xếp phải kể đến Nếu dãy khố ln biến động lúc chi phí cho xếp lại lên rõ điều bộc lộ nhược điểm phương pháp Để khắc phục nhược điểm vừa nêu tìm kiếm nhị phân đáp ứng yêu cầu tìm kiếm bảng biến động, phương pháp hình thành dựa sở bảng tổ chức dạng nhị phân mà ta gọi nhị phân tìm kiếm Trong đó, đỏ đen cấu trúc liệu hay, lu an với tìm kiếm nhị phân cấu trúc liệu có điểm mạnh n va việc lưu trữ tìm kiếm liệu Song đỏ đen có đặc tính riêng tn to mà nhờ làm bật điểm mạnh Thuật tốn gh quan trọng cân Trên sở với định hướng p ie thầy giáo hướng dẫn PGS-TSKH Trần Quốc Chiến em chọn đề tài w “Cấu trúc liệu đỏ đen mô ” d oa nl II MỤC TIÊU NHIỆM VỤ: an lu - Đề tài nhằm nghiên cứu lý thuyết đỏ đen, dạng nhị ll u nf trúc liệu va phân tìm kiếm tự cân để thấy điểm mạnh kiểu cấu oi m - Đề tài nhằm khẳng định làm rõ khái niệm, tính chất việc tìm kiếm tốn tìm kiếm z at nh sử dụng cấu trúc liệu đỏ đen vào việc lưu trữ liệu thực z - Thực nghiên cứu mơ phép tốn chèn, xóa, tìm @ m co III PHƯƠNG PHÁP NGHIÊN CỨU: l gm kiếm đỏ đen, đánh giá chúng so với nhị phân tìm kiếm an Lu - Tham khảo tài liệu, viết, giáo trình có liên quan đến cấu trúc cây, nhị phân tìm kiếm, đỏ đen, tài liệu mạng n va ac th si - Sử dụng ngôn ngữ lập trình hướng đối tượng…để xây dựng bước mơ thuật toán đỏ đen IV BỐ CỤC CỦA ĐỀ TÀI: LỜI MỞ ĐẦU Báo cáo chia thành chương: Chương I: Tổng quan cấu trúc Chương giới thiệu tổng quan cấu trúc cây, khái niệm lu tính chất cây, nhị phân an Chương II: Cây nhị phân tìm kiếm va n Chương trình bày tìm kiếm nhị phân bao gồm: định gh tn to nghĩa, giải thuật tìm kiếm, thao tác chèn xóa nhị p ie phân tìm kiếm, đánh giá thời gian, độ phức tạp thao tác w Chương III: Cây đỏ đen oa nl Chương trình bày khái niệm, tính chất đỏ đen, d phép tốn chèn, xóa, tìm kiếm đỏ đen, đánh giá thời gian, lu u nf va trúc đỏ đen an độ phức tạp phép toán này, thuận lợi sử dụng cấu ll Chương IV: Cài đặt chương trình oi z at nh TÀI LIỆU THAM KHẢO m KẾT LUẬN z m co l gm @ an Lu n va ac th si CHƯƠNG I: TỔNG QUAN VỀ CẤU TRÚC CÂY I CẤU TRÚC CÂY: ĐỊNH NGHĨA VÀ CÁC KHÁI NIỆM VỀ CÂY: - Cây đồ thị liên thơng khơng có chu trình đơn - Cây dùng từ năm 1857, nhà toán học Anh tên Arthur Cayley dùng để xác định dạng khác hợp chất hóa học Từ đó, dùng để giải nhiều tốn nhiều lĩnh vực khác hay sử dụng Tin học lu - Cây tập hợp T phần tử (gọi nút cây) có an va nút đặc biệt gọi nút gốc (root), nút lại chia thành n tập rời T1, T2, …, Tn theo quan hệ phân cấp Ti gh tn to gọi Mỗi nút cấp i quản lý số nút cấp i +1 Quan hệ người ta gọi quan hệ cha - p ie - Gốc đỉnh đặc biệt, thông thường đỉnh nl w Mức đỉnh độ dài đường từ gốc đến đỉnh Chiều cao d oa số mức lớn nút có va an lu - Mức (gốc (T))=0 u nf * Ví dụ : Đồ thị sau ll V oi m z at nh V V z V V l V gm @ V m co + Ta chọn V1 gốc có mức V2, V3 đỉnh mức 1, an Lu đỉnhV4, V5, V6, V7 có mức 2, chiều cao - Rừng đồ thị mà thành phần liên thông n va ac th si Return; Else insertCase(n); } //TH3: Cả node cha P node bác U đỏ Void insertCase3(Node* n) //Node bác U khác rỗng đỏ { lu If (Uncle(n) !=NULL && Uncle(n)→color = =RED) an n va { tn to n→parent→color=BLACK; ie gh Uncle(n)→color = BLACK; p Grandparent (n)→color = RED; w } d oa nl InsertCase1 (Grandparent (n)); va an lu Else ll u nf InsertCase4 (n); oi m } z at nh //TH4: Node cha P đỏ, node bác U đen Void InsertCase4 (Node* n) z @ //node N phải P, P trái node ông G { gm m co l If (n = = n→father→right && n→father= = Grandparent (n)→left) { n va n= n→left; an Lu RotateLeft (n→father); ac th si } //node N trái P, P phải node ông G Else if(n= =n→father→left && n→father= =Grandfather(n) →right) { RotateRight (n→father); n = n→right; lu } an n va InsertCase5(n); tn to } ie gh //TH5: node cha P đỏ, node bác U đen, p Void insertCase5 (Node* n) oa nl w { n→father→color = BLACK; d lu va an Grandparent (n)→color = RED; u nf If (n = = n→father→left && n→father = = Grandparent (n) ll →left) m oi // node N trái P, P trái node ông G z at nh RotateRight (Grandparent (n)); z @ Else an Lu } m co RotateLeft (Grandparent (n)); l gm //node N phải P, P phải node ông G n va ac th si Xóa node: - Ta tìm vị trí nút cần xóa nhị phân - Nếu nút cần xóa có ta tìm phần tử mạng (có thể nút lớn bên trái nút nhỏ bên phải) Phần tử mạng khơng có có - Do ta cần xét chung trường hợp nút bị xóa khơng có có Gọi nút y lu an Nếu nút bị xóa y màu đỏ chắn cha nút n va phải nút đen Việc xóa y thực bình thường to tn Trường hợp phức tạp xảy nút bị xóa y màu đen Ta ie gh thực thay nó nút NIL (nếu khơng p có con) Việc làm giảm chiều cao đen nhánh chứa y w Nếu y khơng phải gốc ta phải thực khơi phục lại thuộc tính đỏ oa nl đen d - Gọi nút thay cho y N an lu va - Nếu N màu đỏ cần đổi màu N thành đen thuộc ll u nf tính đỏ đen phục hồi oi m - Nếu N màu đen khơng thể đổi màu N Phải thực z at nh cách khác Có trường hợp xảy ra: Nút anh em với N màu đỏ 2) Nút anh em với N màu đen nút có đen 3) Nút anh em với N màu đen có màu đỏ cháu z 1) m co Nút anh em với N màu đen có màu đỏ cháu ngoại P an Lu 4) l gm @ nội P, màu đen n va ac th si 3.1 Trường hợp 1: Nút anh em với N màu đỏ - Ta thực đổi màu nút S P, xoay nút cha N để chuyển trường hợp khác với SL anh em N Đổi màu S lu P Đổi màu S Xoay SR P SL an n va SR SL SR N p ie gh tn to SL N đen oa nl w 3.2 Trường hợp 2: Nút anh em với N màu đen nút có d - Ta thực đổi màu nút S, chiều cao đen nhánh lu va an bên phải P bên trái P Nhưng P chiều cao đen lại ll u nf giảm Coi P N xét lại từ đầu m Đổi màu oi P z at nh P z @ N gm N S S m co l S L SR n va L SR an Lu S ac th si 3.3 Trường hợp 3: Nút anh em với N màu đen có màu đỏ cháu nội P, màu đen - Ta thực đổi màu quay nút S để chuyển trường hợp P P Xoay SL N SR N lu an va S n SL S SR gh tn to SL p ie SR w d oa nl 3.4 Trường hợp 4: Nút anh em với N màu đen có màu đỏ cháu ngoại P an lu - Đổi màu S thành màu P, màu P thành đen, màu ll u nf va S đỏ thành đen xoay P sang trái m S z at nh SL z SR P SL SR SL m co N l gm @ P Xoay oi S N S R an Lu R n va ac th si Nhận xét: Trong tìm kiếm nhị phân thấy phép loại bỏ phức tạp so với phép thêm vào Trong đỏ đen phép loại bỏ phức tạp nhiều so với phép thêm vào yêu cầu đảm bảo qui tắc đỏ đen + Nếu xóa nút đỏ chiều cao đen khơng đổi + Nếu xóa nút đen phải cân lại Code: void Delete(RBTree &t, int k) { lu //Tìm nút z cần xoá an if (isEmpty(t)) return; va n pNode z = t.root; to tn while (z!=Null && z→key !=k){ ie gh if (z→key > k) p z= z→left; nl w else oa z= z→right; d } lu va an if (z= =Null) u nf return ; //Khơng tìm thấy ll Xác định nút y nút cần thực xoá m oi If (z→left = = Null !! z→right = = Null) else z at nh y = z; //z khơng đủ => xố z y = SearchStandFor(z); x = y→left; an Lu if (y→left != Null) m co pNode x; // x nút y l //Tiến hành xoá y gm @ //y có n va ac th si else x = y→right; //cha x cha y //Nếu x Null không báo lỗi x→parent = y→parent; if (y→parent = = Null) //y gốc t.root = x; else if (y→parent→left= =y) y→parent→left = x; lu else an y→parent→right = x; va n //Kiểm tra cân to tn if (y != z) // y phần tử mạng ie gh z→key = y→key; p if (y→color = =BLACK) nl w FIXUP(t,x); // cân lại oa //Xoá y d y→left = y→right = y→parent = Null; lu ll Tìm kiếm: u nf } va an Delete y; m oi - Khi xây dựng cấu trúc đỏ đen thao tác tìm kiếm z at nh cấu trúc liệu thực nhị phân tìm kiếm z l gm thể thực sau: @ - Khi tìm kiếm khóa X có hay khơng ta có So sánh X với khóa gốc bốn tình sau m co xuất hiện: khơng thỏa an Lu 1) Khơng có gốc (cây rỗng): X khơng có cây, phép tìm kiếm n va ac th si 2) X trùng với khóa gốc: Phép tìm kiếm thỏa 3) X nhỏ khóa gốc: Tìm kiếm thực tiếp tục cách xét trái gốc với cách làm tương tự 4) X lớn khóa gốc: Tìm kiếm thực tiếp tục cách xét phải gốc với cách làm tương tự Ví dụ: Với cấu trúc đỏ đen xây dựng từ hình bên dưới, ta cần tìm xem giá trị khóa có hay khơng 1 lu an va n tn to p ie gh nl w oa Quá trình tìm kiếm sau: d + So sánh với giá trị nút gốc: < 11, chuyển sang lu va an trái u nf + Thực so sánh > 2, chuyển sang phải ll + Thực so sánh < 7, chuyển sang trái m oi + Cuối = 5, tìm kiếm thỏa z at nh Như vậy, thời gian tìm kiếm sử dụng cấu trúc đỏ đen O(log2n) z gm @ Code: Int searchNode(NodeRB *root,int x) l //Trả 0: khơng tìm thấy; 1: tìm thấy m co { if (root→key= =x) return 1; an Lu if (root= =NULL) return 0; n va ac th si if (root→key>x) return searchNode (root→left, x); else return searchNode (root→right, x); } lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si CHƯƠNG IV: CÀI ĐẶT CHƯƠNG TRÌNH I GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH: Vài nét ngôn ngữ Java: - Java ngôn ngữ lập trình Sun Microsystems giới thiệu vào tháng năm 1995 Từ trở thành cơng cụ lập trình lập trình viên chuyên nghiệp Java xây dựng tảng C C++ Do đó, sử dụng cú pháp C đặt trưng hướng đối tượng C++ - Ban đầu Java thiết kế để làm ngôn ngữ viết chương trình cho sản phẩm điện tử dân dụng đầu video, tivi, điện thoại,….Tuy lu an nhiên với mạnh mẽ Java khiến tiếng đến mức vượt n va tưởng tượng nhà thiết kế gh tn to - Java đặt biệt hướng đối tượng mạnh Internet - Ban đầu ngôn ngữ gọi Oak sồi mọc phía sau văn p ie phịng nhà thiết kế ơng Jame Gosling, sau ơng thấy w có ngơn ngữ lập trình Oak rồi, nhóm thiết kế đổi tên, “Java” oa nl tên chọn, Java tên quán cafe mà nhóm thiết kế d Java hay đến uống an lu - Java ngơn ngữ lập trình hướng đối tượng, va dùng Java để viết chương trình hướng chức Java giải ll u nf hầu hết công việc mà ngơn ngữ khác làm oi m - Java ngôn ngữ vừa biên dịch vừa thông dịch Nó ngơn ngữ z at nh lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành z Một số đặc điểm ngôn ngữ Java: l gm + Quen thuộc với lập trình viên C @ - Đơn giản: an Lu nạp chồng toán tử, thao tác trỏ, đa kế thừa… m co + Loại bỏ đặc điểm phức tạp, dễ gây nhầm lẫn C++ - Độc lập với môi trường: Java thiết kế để hỗ trợ ứng n va dụng mạng chạy máy ảo Java ac th si - Hướng đối tượng: + Bao bọc liệu + Đa hình + Kế thừa + Liên kết động - Phân tán: Java hỗ trợ đầy đủ mơ hình tính tốn phân tán: mơ hình Client/server, gọi thủ tục từ xa… - Mạnh mẽ: + Java ngôn ngữ yêu cầu chặt chẽ kiểu liệu, việc ép kiểu tự động bừa bãi C, C++ hạn chế Java, điều làm lu chương trình rõ ràng, sáng sủa, lỗi an + Java kiểm tra lúc biên dịch thời gian biên dịch va n Java loại bỏ số loại lỗi lập trình định to + Java cung cấp mơi trường thực thi có kiếm tra chặt chẽ p ie gh tn - An toàn: + Cơ chế kiểm tra an ninh hệ thống đa tầng nl w - Khả chuyển: Khả triển khai ứng dụng Java nhiều môi oa trường khác d - Biên dịch - Thông dịch: lu va an + Mã nguồn Java biên dịch thành mã ByteCode trước u nf chạy máy ảo Java trình thơng dịch ll + The Virtual Machine (Java interpreter) cung cấp tập hợp m oi hàm chức chuẩn hóa cho môi trường ứng dụng z at nh - Đa luồng: Tạo khả đáp ứng tương tác kịp thời z @ Giới thiệu ứng dụng Java vào chương trình đỏ đen: l gm Ứng dụng Applets: Applet chương trình Java tạo để sử dụng Internet thông qua trình duyệt hỗ trợ Java IE Applet m co nhúng bên trang web Khi trang web hiển thị trình duyệt, an Lu Applet tải thực thi trình duyệt n va ac th si II DEMO CHƯƠNG TRÌNH: - Giao diện đỏ đen gồm có: + Textbox : Điền liệu cho nút + Insert: Chèn nút + Delete: Xóa nút + Search: Tìm kiếm + Nextstep: Nút thực bước để có đỏ đen + Reset: Thiết lập lại lu an n va p ie gh tn to d oa nl w va an lu ll u nf Đây giao diện chương trình đỏ đen oi m z at nh z m co l gm @ an Lu n va ac th si lu an n va Đây ví dụ đỏ đen p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si KẾT LUẬN Giống nhị phân tìm kiếm thơng thường, đỏ đen cho phép việc tìm kiếm, chèn xóa thời gian O(log2n) Thời gian tìm kiếm gần hai loại cây, đặc điểm đỏ đen khơng sử dụng q trình tìm kiếm Điều bất lợi việc lưu trữ cần cho node tăng chút để điều tiết màu đỏ - đen (một biến boolean) Thời gian chèn xóa tăng dần số việc phải thực thi phép lật màu quay đường xuống điểm chèn lu an Trung bình phép chèn cần khoảng chừng phép quay Do đó, n va chèn hày chiếm O(log2n) thời gian, lại chậm phép chèn Bởi hầu hết ứng dụng, có nhiều thao tác tìm kiếm ie gh tn to nhị phân thông thường p chèn xóa, có lẽ khơng có nhiều bất lợi thời gian dùng đỏ w đen thay nhị phân thơng thuờng Dĩ nhiên, điều thuận lợi oa nl đỏ đen, liệu xếp không làm giảm hiệu suất O(n) d Một trợ ngại đỏ đen việc cài đặt phép toán phức lu ll u nf va an tạp so với nhị phân tìm kiếm oi m z at nh z m co l gm @ an Lu n va ac th si TÀI LIỆU THAM KHẢO [1] Trần Quốc Chiến: Giáo trình Lý thuyết đồ thị [2] Đỗ Xuân Lôi: Cấu trúc liệu giải thuật - NXB ĐHQG Hà Nội [3] R.Sedgevick - Algorithms, Addison - Wesley, 1990 [4] Đinh Mạnh Tường: Cấu trúc liệu giải thuật [5] Chu Đức Khánh: Lý thuyết đồ thị, Nxb ĐHQG Tp Hồ Chí Minh, 2002 [6] Các trang web tham khảo: - http://www.cs.auckland.ac.nz/software/AlgAnim/red_black.html lu - http://www.cs.waikato.ac.nz/Teaching/COMP317B/Week_3/Red- an va black_tree.html n - gh tn to http://vi.wikipedia.org/wiki/C%C3%A2y_%C4%91%E1%BB%8F_%C4%9 p ie 1en d oa nl w - http://projectviet.com/Project/Details/17 ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si