Bài giảng Cấu trúc dữ liệu và giải thuật: Cây đỏ-đen và cây AA có nội dung trình bày về độ cao của cây nhị phân tìm kiếm (BST) cân bằng có N nodes là O(log2N), cây cân bằng có chi phí thấp, có nhiều cách xây dựng cây nhị phân tìm kiếm cân bằng,... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Cấu trúc liệu & Giải thuật (Data structures & Algorithms) Cây đỏ-đen AA Advanced data structures Review Giới thiệu Cây Đỏ – Đen (Red Black Tree) AA – Tree 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Review Độ cao nhị phân tìm kiếm (BST) cân có N nodes O(log2N) Cây cân có chi phí thấp Có nhiều cách xây dựng nhị phân tìm kiếm cân bằng: AVL tree Red-Black tree AA tree Splay tree 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Giới thiệu Các thuật ngữ thường dùng: BST AVL tree Red Black tree AA tree Splay tree / Top-down splay tree 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Cây cân Red Black AA Review Giới thiệu Cây Đỏ – Đen (Red Black Tree) AA – Tree 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Red Black Tree Định nghĩa Cấu trúc lưu trữ Các tính chất Các thao tác Đánh giá 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Red Black Tree (tt) Định nghĩa: Red-Black tree nhị phân tìm kiếm (BST) tuân thủ quy tắc sau: [1] Mọi node phải đỏ đen [2] Node gốc đen [3] Các node (external node; NULL node) mặc định node đen [4] Nếu node đỏ, node phải đen [5] Mọi đường dẫn từ gốc đến node ngồi phải có số lượng node đen 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Red Black Tree (tt) H=4 H=3 Hb = H=3 Hb = Hb = H=2 H=1 Hb = Hb = H=2 Hb = H=1 Hb = Minh họa Red-Black tree 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Red Black Tree (tt) Chiều cao đen (black height – hb(x)): số node đen đường từ node x đến node ngồi (khơng bao gồm x) Từ quy tắc [4] khơng thể tồn node cha node đỏ Khi đỏ đen vi phạm qui tắc gọi tượng xung đột đỏ-đỏ 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM Red Black Tree (tt) Cấu trúc lưu trữ: Thông tin lưu trữ Node (key) Địa node gốc bên trái (* pLeft) Địa node gốc bên phải (* pRight) Địa node cha (* pParent) Thuộc tính màu node (color) 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 10 AA – Tree (tt) Demo chương trình 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 53 AA – Tree (tt) AATREE AA_Insert_Node(DataType x, AATREE t) { if(t == NULL) { // tạo node thêm vào t = new AANode; t->key = x; t->pLeft = t->pRight = NULL; t->level = 1; } else if(x < t->key) t->pLeft = AA_Insert_Node(x, t->pLeft); else if(x > t->key) t->pRight = AA_Insert_Node(x, t->pRight); else return t; t = Skew(t); t = Split(t); return t; // trùng khóa } 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 54 AA – Tree (tt) AATREE right_rotate(AATREE &t) { AATREE t1; t1 = t->pLeft; t->pLeft = t1->pRight; t1->pRight = t; return t1; } AATREE Skew(AATREE &t) { if (t->pLeft != NULL) if (t->pLeft->level == t->level) t = right_rotate(t); return t; } 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 55 AA – Tree (tt) AATREE left_rotate(AATREE &t) { AATREE t1; t1 = t->pRight; t->pRight = t1->pLeft; t1->pLeft = t; t1->level++; return t1; } AATREE Split(AATREE &t) { if (t->pRight !=NULL) if (t->pRight->pRight != NULL) if (t->pRight->pRight->level == t->level) t = left_rotate(t); return t; } 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 56 AA – Tree (tt) Các thao tác bản: (tt) Thêm node: VD thêm “6” 10 09/2013 12 11 13 ?? Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 57 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: Giảm mức 10 12 11 13 Xóa “1” 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 58 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: Giảm mức 10 12 11 13 Sau giảm mức “2” 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 59 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: Cần Skew 10 12 11 13 Sau giảm mức “4” “10” 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 60 AA – Tree (tt) Các thao tác bản: (tt) Cần Skew Xóa node: 10 12 11 13 Sau Skew “10”, lần 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 61 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: Cần Split 10 12 11 13 Sau Skew “10”, lần 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 62 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: Cần Split 10 12 11 13 Sau Split “4” 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 63 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: 10 12 11 13 Sau Split “8” STOP ! 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 64 AA – Tree (tt) Đánh giá: Độ phức tạp O(log2N) Không cần lưu trỏ đến node cha (pParent) Cài đặt đơn giản Red-Black 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 65 Thank you for your attention 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 66 Q&A 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 67 ... *pRight; int level; } AANode; // Dữ liệu // mức node typedef struct AANode* AATREE; 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 45 AA – Tree (tt) Các... phức tạp AVL AA 09/2013 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 32 Cây cân Red Black AA Review Giới thiệu Cây Đỏ – Đen (Red Black Tree) AA – Tree 09/2013... - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM 34 AA – Tree (tt) Liên kết ngang Liên kết trái 70 30 15 10 50 20 Liên kết phải 35 40 60 55 85 65 80 90 Minh họa cấu trúc AA 09/2013 Data