Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
0,93 MB
Nội dung
Cây cân Red Black AA Review Giới thiệu Cây Đỏ – Đen (Red Black Tree) AA – Tree Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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á Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt Red Black Tree (tt) H=4 Hb = H=3 H=3 Hb = Hb = H=1 H=2 Hb = Hb = H=2 Hb = H=1 Hb = Minh họa Red-Black tree Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 đỏ-đỏ Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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) Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 Red Black Tree (tt) typedef enum {BLACK, RED} NodeColor; typedef int DataType; // Kiểu liệu typedef struct NodeTag { DataType key; NodeColor color; struct NodeTag struct NodeTag struct NodeTag } RBNode; *pLeft; *pRight; *pParent; // Dữ liệu // Màu node // Để dễ cài đặt typedef struct RBNode* RBTREE; Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 11 Red Black Tree (tt) Các tính chất: Tính chất 1: h: chiều cao hb: chiều cao đen h 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; Winter 2011 // trùng khóa Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; } Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; } Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 56 AA – Tree (tt) Các thao tác bản: (tt) Thêm node: VD thêm “6” 10 Winter 2011 12 11 13 ?? Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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” Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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” Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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” Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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” Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 63 AA – Tree (tt) Các thao tác bản: (tt) Xóa node: 10 12 11 13 Sau Split “8” STOP ! Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 65 ... tạp AVL AA Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt 32 Cây cân Red Black AA Review... struct NodeTag *pRight; int level; } AANode; // Dữ liệu // mức node typedef struct AANode* AATREE; Winter 2011 Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM... Data Structures & Algorithms - Red Black + AA tree - Nguyen Tri Tuan, DH.KHTN Tp.HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt Red Black Tree (tt) ? ?Cấu trúc lưu trữ: Thông tin lưu trữ