Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc cây - Văn Chí Nam, Nguyễn Thị Hồng Nhung, Đặng Nguyễn Đức Tiến

40 59 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc cây - Văn Chí Nam, Nguyễn Thị Hồng Nhung, Đặng Nguyễn Đức Tiến

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc cây trình bày các nội dung: Khái niệm, phép duyệt cây và biểu diễn cây, cây nhị phân và cây nhị phân tìm kiếm, cây AVL. Mời các bạn cùng tham khảo nội dung chi tiết.

Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Khái niệm Phép duyệt Biểu diễn Cây nhị phân Cây nhị phân tìm kiếm Cây AVL Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt Cấu trúc liệu giải thuật - HCMUS 2015         Tree Search tree Binary search tree Balanced tree AVL tree AA tree Red-Black tree … Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt a b d i e j o c f g k p l h m n q Cấu trúc liệu giải thuật - HCMUS 2015 Sơ đồ tổ chức Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS Cây thư mục https://fb.com/tailieudientucntt Cây (cây có gốc) xác định đệ quy sau: Tập hợp gồm đỉnh Cây có gốc đỉnh Gọi T1, T2, … Tk (k ≥ 1) khơng cắt có gốc tương ứng r1, r2, … rk Giả sử r đỉnh không thuộc Ti Khi đó, tập hợp T gồm đỉnh r Ti tạo thành với gốc r Các T1, T2, … Tk gọi gốc r Cấu trúc liệu giải thuật - HCMUS 2015 Nút gốc r1 r2 rk T1 T2 Tk Cây Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt       node: đỉnh parent (của node n): node cha node n Node phía trực tiếp node n child (của node n): node node n Node phía trực tiếp node n root: gốc Node khơng có node cha leaf: node Node khơng có node path: đường Cấu trúc liệu giải thuật - HCMUS 2015 10     siblings: node node cha ancestor (của node n): node đường từ node gốc đến node n descendant (của node n): node đường từ node n đến node subtree (của node n): Cây bao gồm node node n node “hậu duệ” node Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 11 Nút gốc r1 r2 rk k1 T1 T2 k2 Tk k3 k4 k5 Cây Nút Cấu trúc liệu giải thuật - HCMUS 2015 Đường k6 12  degree/order: bậc  Bậc node: Số node  Bậc cây: bậc lớn số node  depth/level: độ sâu/mức  Mức (độ sâu) node:  Nếu   Nếu  node n node gốc: level(n) = node n node gốc: level(n) = + level(parent(n)) Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 13  height: chiều cao Số lượng node đường dài từ node gốc đến node  Chiều cao cây:  Nếu T rỗng: height(T) =  Nếu T khác rỗng: height (T) = max{level(Ni)}, NiT  Chiều cao cây:  Nếu T rỗng: height(T) =  Nếu T khác rỗng: height(T) = + max{height(Ti)}, Ti T Cấu trúc liệu giải thuật - HCMUS 2015 14 Bậc = k Nút gốc Bậc = Độ cao = r1 r2 rk k1 T1 T2 k2 Tk k3 k4 k5 Cây Nút Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS Đường https://fb.com/tailieudientucntt k6 15 Cấu trúc liệu giải thuật - HCMUS 2015 16    Đảm bảo đến node xác lần cách có hệ thống Nhiều thao tác xử lý cần phải sử dụng đến phép duyệt Các phép bản:  Duyệt trước (Pre-order)  Duyệt (In-order)  Duyệt sau (Post-order) Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 17 Parent(a)? Parent(b) = a Tìm cha đỉnh EldestChild(c) = g • Parent(x) Tìm đỉnh trái b c • EldestChild(x) Tìm đỉnh kề phải d e f g h • NextSibling(x) NextSibling(g) = h i NextSibling(h)? Cấu trúc liệu giải thuật - HCMUS 2015 18 Duyệt theo chiều sâu Duyệt trước • abdeijcfgkh Duyệt b c • dbiejafckgh d e f g h Duyệt sau • dijebfkghca i j k Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 19 Pre-order Post-order void Preorder(NODE A) void Postorder(NODE A) { NODE B; { NODE B; Visit(A); B = EldestChild(A); while (B != ) { Postorder(B); B = NextSibling(B); } Visit(A); B = EldestChild(A); while (B != ) { Preorder(B); B = NextSibling(B); } } } Cấu trúc liệu giải thuật - HCMUS 2015 20 In-Order void Inorder(NODE A) { NODE B; B = EldestChild(A); if (B != ) { Inorder(B); B = NextSibling(B); } Visit(A); while (B != ) { Inorder(B); B = NextSibling(B); } } Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 10 51  Đối với phép tìm kiếm:  Trường hợp tốt nhất: nút (trừ nút lá) có con: O(log2n) (chính chiều cao cây)  Trường hợp xấu nhất: trở thành danh sách liên kết: O(n)  Trường hợp trung bình bao nhiêu? O(log2n) Cấu trúc liệu giải thuật - HCMUS 2015 52  Tạo nhị phân tìm kiếm theo thứ tự nhập sau: 1, 8, 9, 12, 14, 15, 16, 18, 19 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 26 53  Tạo nhị phân tìm kiếm theo thứ tự nhập sau: 1, 8, 9, 12, 14, 15, 16, 18, 19 12 14 15 16 18 Cấu trúc liệu giải thuật - HCMUS 2015 19 54 AVL tree Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 27 55  Do G.M Adelsen Velskii E.M Lendis đưa vào năm 1962, đặt tên AVL Cấu trúc liệu giải thuật - HCMUS 2015 56  Cây cân AVL nhị phân tìm kiếm mà đỉnh cây, độ cao trái phải không chênh lệch Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 28 57  Ví dụ : 12 12 11 18 17 Cây AVL? 18 11 17 Cây AVL? Cấu trúc liệu giải thuật - HCMUS 2015 58   Việc xây dựng cân dựa nhị phân tìm kiếm, bổ sung thêm giá trị cho biết cân Cách làm gợi ý: struct NODE { Data key; NODE *pLeft, *pRight; int bal; };  Trong giá trị bal (balance, cân bằng) là: 0: cân bằng; 1: lệch trái; 2: lệch phải Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 29 59  Mất cân trái-trái (L-L)  Mất cân bằn trái-phải (L-R)  Mất cân phải-phải (R-R)  Mất cân phải-trái (R-L) Cấu trúc liệu giải thuật - HCMUS 2015 60  Mất cân trái-trái (L-L) 12 18 17 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 30 61  Mất cân trái-phải (L-R) 12 18 17 Cấu trúc liệu giải thuật - HCMUS 2015 62  Mất cân phải-phải (R-R) 12 11 22 25 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 31 63  Mất cân phải-trái (R-L) 12 11 22 20 Cấu trúc liệu giải thuật - HCMUS 2015 64  Giả sử node xảy cân bên phải (cây phải chênh lệch với trái đơn vị):  Mất cân phải-phải (RR)  Quay  Mất trái cân phải-trái (R-L)  Quay phải  Quay trái Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 32 65  P cân phải-phải (RR): Quay trái P P P Q h+1 h h h+1 h h Cấu trúc liệu giải thuật - HCMUS 2015 66  P cân phải-phải (RR): Quay trái P P 18 35 Q 35 20 18 50 50 20 55 55 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 33 67  P cân phải-trái (RL):  Bước 1: quay phải Q  Bước 2: quay trái P P Q h h h h-1 Cấu trúc liệu giải thuật - HCMUS 2015 68  P cân phải-trái (RL):  Bước 1: quay phải Q P Quay phải Q P Q Q h h h h h h- h-1 h Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 34 69  P cân phải-trái (RL):  Bước 2: quay trái P P P Quay trái P Q h h h h h- h- h h Cấu trúc liệu giải thuật - HCMUS 2015 70  P cân phải-trái (RL) – Bước 1: Quay phải Q P 35 35 Q 40 20 37 55 45 40 18 50 18 37 20 36 65 50 45 36 55 65 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 35 71  P cân phải-trái (RL) - Bước 2: Quay trái P P 35 40 Q 40 18 37 20 36 50 45 50 35 37 18 55 20 45 55 36 65 65 Cấu trúc liệu giải thuật - HCMUS 2015 72  Khi node xảy cân bên trái (cây trái chênh lệch với phải đơn vị): (thực đối xứng với trường hợp cân bên phải)  Mất cân trái-trái (LL)  Quay  Mất phải cân trái-trái (L-R)  Quay trái  Quay phải Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 36 73 Theo Wikipedia Cấu trúc liệu giải thuật - HCMUS 2015 74  Thực hoàn tồn tương tự nhị phân tìm kiếm 10 23 20 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 37 75   Thực tương tự với việc thêm phần tử nhị phân tìm kiếm Nếu xảy việc cân xử lý trường hợp cân biết Cấu trúc liệu giải thuật - HCMUS 2015 76    Thực tương tự nhị phân tìm kiếm: xét trường hợp, tìm phần tử mạng cần Sau xóa, cân bằng, thực cân Lưu ý: việc cân sau hủy xảy dây chuyền Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 38 77  Ví dụ: xóa 35 Phần tử mạng 36 40 40 50 35 55 45 37 18 36 20 50 36 65 55 45 37 18 20 65 Cây cân nên hiệu chỉnh Cấu trúc liệu giải thuật - HCMUS 2015 78  Xóa phần tử 45 40 40 50 36 37 18 20 45 50 36 55 37 18 65 20 55 65 Node 50 bị lệch phải !!! Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 39 79  Xóa phần tử 45: cân lại Quay trái node 50 40 40 50 36 37 18 20 55 36 55 37 18 65 50 65 20 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt 40 ... (R-R)  Mất cân phải-trái (R-L) Cấu trúc liệu giải thuật - HCMUS 2015 60  Mất cân trái-trái (L-L) 12 18 17 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt...  Mất cân trái-phải (L-R) 12 18 17 Cấu trúc liệu giải thuật - HCMUS 2015 62  Mất cân phải-phải (R-R) 12 11 22 25 Cấu trúc liệu giải thuật - HCMUS 2015 CuuDuongThanCong.com ©FIT-HCMUS https://fb.com/tailieudientucntt... Lendis đưa vào năm 1962, đặt tên AVL Cấu trúc liệu giải thuật - HCMUS 2015 56  Cây cân AVL nhị phân tìm kiếm mà đỉnh cây, độ cao trái phải không chênh lệch Cấu trúc liệu giải thuật - HCMUS 2015

Ngày đăng: 11/01/2020, 17:04

Tài liệu cùng người dùng

Tài liệu liên quan