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 AA cung cấp cho người đọc các kiến thức về cây AA, cấu trúc dữ liệu cho một nút của cây AA, các biến đổi hiệu chỉnh cây AA,... Mời các bạn cùng tham khảo nội dung chi tiết.
CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU CÂY AA Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Cây AA CuuDuongThanCong.com Spring 2017 30 70 15 10 50 20 35 60 40 55 85 65 80 90 Hình 1: Cây có liên kết ngang https://fb.com/tailieudientucntt Data structure & Algorithm Cây AA (cont.) Định nghĩa Liên kết thông thường (link) liên kết nút cha nút có mức nhỏ đơn vị Liên kết ngang (horizontal link) liên kết nút cha nút mức CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cây AA (cont.) Định nghĩa Mức (Level) nút Mức (Level) nút khơng có trái Mức (Level) nút có trái là mức trái cộng với Lưu ý Mức nút AA mức tổng quát Đây định nghĩa Về mặt thể hình vẽ nút có mức hàng vẽ Các mũi tên hướng qua trái đến nút trái Các mũi tên hướng qua phải đến nút phải CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cây AA (cont.) Định nghĩa Cây AA (Arne Andersson Tree) nhị phân tìm kiếm Chỉ có liên kết ngang phải Khơng có hai liên kết ngang phải liên tiếp Mọi nút có mức lớn có nút Nếu nút khơng có liên kết ngang phải nút mức CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cây AA (cont.) Nhận xét Từ định nghĩa AA ta thấy AA có tính chất sau Mức nút trái nhỏ mức nút cha đơn vị Mức nút phải hay nhỏ mức cha đơn vị Cây AA trường hợp đặc biệt đỏ đen CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu cho nút AA Cấu trúc lưu trữ cho nút AA template struct AANode { T data; int key; AANode *pLeft; AANode * pRight ; int level; }; CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thêm nút Sử dụng thuật toán nhị phân tìm kiếm để thêm phần tử Vì phần tử thêm nút mức Duyệt ngược lên để hiệu chỉnh cho qui định AA CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Các biến đổi hiệu chỉnh AA Có hai thao tác để hiệu chỉnh cho AA Biến đổi lật (skew) dùng để loại bỏ liên kết ngang trái Biến đổi chia (split) dùng để loại bỏ hai liên kết ngang phải liên tiếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Các biến đổi hiệu chỉnh AA (cont.) Biến đổi skew tương tự biến đổi right rotation Nút C nút trái N Nút C nút N mức với tạo nút ngang trái Xoay nút C N CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 10 Minh họa thêm nút (cont.) 30 70 15 CuuDuongThanCong.com Spring 2017 10 50 20 35 40 60 45 55 85 65 80 90 Hình 6: Split 35 https://fb.com/tailieudientucntt Data structure & Algorithm 16 Minh họa thêm nút (cont.) CuuDuongThanCong.com Spring 2017 30 70 15 10 40 20 35 50 45 60 55 85 65 80 90 Hình 7: Skew 50 https://fb.com/tailieudientucntt Data structure & Algorithm 17 Minh họa thêm nút (cont.) 30 70 15 10 CuuDuongThanCong.com Spring 2017 40 20 35 50 45 60 55 85 65 80 90 Hình 8: Split 40 https://fb.com/tailieudientucntt Data structure & Algorithm 18 Minh họa thêm nút (cont.) CuuDuongThanCong.com Spring 2017 30 50 15 10 70 40 20 35 60 45 55 85 65 80 90 Hình 9: Skew 70 https://fb.com/tailieudientucntt Data structure & Algorithm 19 Minh họa thêm nút (cont.) CuuDuongThanCong.com Spring 2017 30 50 15 10 70 40 20 35 60 45 55 85 65 80 90 Hình 10: Split 30 https://fb.com/tailieudientucntt Data structure & Algorithm 20 Minh họa thêm nút (cont.) CuuDuongThanCong.com Spring 2017 50 30 70 15 10 40 20 35 60 45 55 85 65 80 90 Hình 11: Kết https://fb.com/tailieudientucntt Data structure & Algorithm 21 Xóa nút Sử dụng thuật tốn nhị phân tìm kiếm để xóa phần tử Duyệt ngược lại để hiệu chỉnh cho qui định AA, sử dụng Giảm mức Biến đổi skew Biến đổi split CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 22 Minh họa xóa nút Xóa phần tử khỏi AA CuuDuongThanCong.com Spring 2017 10 12 11 13 Hình 12: Cây AA https://fb.com/tailieudientucntt Data structure & Algorithm 23 Minh họa xóa nút (cont.) CuuDuongThanCong.com Spring 2017 10 12 11 13 Hình 13: Sau xóa phần tử https://fb.com/tailieudientucntt Data structure & Algorithm 24 Minh họa xóa nút (cont.) CuuDuongThanCong.com Spring 2017 Hình 14: Giảm mức https://fb.com/tailieudientucntt Data structure & Algorithm 25 Minh họa xóa nút (cont.) CuuDuongThanCong.com Spring 2017 Hình 15: Skew https://fb.com/tailieudientucntt Data structure & Algorithm 26 Minh họa xóa nút (cont.) CuuDuongThanCong.com Spring 2017 Hình 16: Skew https://fb.com/tailieudientucntt Data structure & Algorithm 27 Minh họa xóa nút (cont.) CuuDuongThanCong.com Spring 2017 Hình 17: Thực số split https://fb.com/tailieudientucntt Data structure & Algorithm 28 Bài luyện tập Ví dụ Hãy xây dựng AA từ dãy {5, 1, 4, 3, 2, 8, 7, 9, 16, 12, 11, 15} Xóa nút 16, Thêm nút 6, 17 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 29 Đánh giá AA Phân tích chi phí thực theo n (số lượng nút cây) tìm phần tử thêm phần tử xóa phần tử xấu ? ? ? trung bình ? ? ? tốt ? ? ? Phân tích chi phí nhớ theo n (số lượng nút cây) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 30 ... https://fb.com/tailieudientucntt Data structure & Algorithm Cấu trúc liệu cho nút AA Cấu trúc lưu trữ cho nút AA template struct AANode { T data; int key; AANode *pLeft; AANode * pRight ; int level; }; CuuDuongThanCong.com... Data structure & Algorithm Cây AA (cont.) Nhận xét Từ định nghĩa AA ta thấy AA có tính chất sau Mức nút trái nhỏ mức nút cha đơn vị Mức nút phải hay nhỏ mức cha đơn vị Cây AA trường hợp đặc biệt.. .Cây AA CuuDuongThanCong.com Spring 2017 30 70 15 10 50 20 35 60 40 55 85 65 80 90 Hình 1: Cây có liên kết ngang https://fb.com/tailieudientucntt Data structure & Algorithm Cây AA (cont.)