Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 5 trang bị cho người học những kiến thức cơ bản về tree structure. Những nội dung chính trong chương này gồm có: Cấu trúc cây, cây nhị phân, cây nhị phân tìm kiếm, cây nhị phân tìm kiếm cân bằng AVL, cây Top-Down, B-Tree. Mời các bạn cùng tham khảo.
Tree Structure Nguyễn Hà Giang - 2009 ThS Nguyễn Hà Giang Hutech - FIT Nội dung Cấu trúc Cây nhị phân Cây nhị phân tìm kiếm Cây nhị phân tìm kiếm cân AVL Phần mở rộng (cây n-phân) Cây Top-Down B-Tree Nguyễn Hà Giang - 2009 Cấu trúc liệu Nguyễn Hà Giang - 2009 Cấu trúc Tập hợp nút cạnh nối nút Có nút gọi gốc Quan hệ one-to-many nút Có đường từ gốc đến nút Các loại cây: Nhị phân: nút có {0,1, 2} nút Tam phân: nút có {0,1,2,3} nút n-phân: nút có {0,1, ,n} nút Nguyễn Hà Giang - 2009 Cấu trúc Sao máy tính, lại thể ngược? Nguyễn Hà Giang - 2009 Khái niệm gốc J Cạnh nút Z B Q A R K Nguyễn Hà Giang - 2009 D A F L Lá Khái niệm Thuật ngữ Nút gốc: khơng có nút cha Nút lá: khơng có nút Nút trong: tất nút nút Chiều cao: khoảng cách từ gốc đến Nút gốc Nút Chiều cao Nút Nguyễn Hà Giang - 2009 Khái niệm Root Node A Node C Node H Node B Node D Node E Node I Node F Node J Node G Node K Node L Cây Nguyễn Hà Giang - 2009 Nút anh em Nội dung Cấu trúc Cây nhị phân Cây nhị phân tìm kiếm Cây nhị phân tìm kiếm cân AVL Nguyễn Hà Giang - 2009 Binary Tree Cấu trúc đơn giản Tại nút gồm thành phần Phần data: chứa giá trị, thông tin… Liên kết đến nút trái (nếu có) Liên kết đến nút phải (nếu có) Cây nhị phân rỗng (ko có nút nào) Cây NP khác rỗng có nút gốc Có đường từ gốc đến nút Nút khơng có nút bên trái bên phải nút Nguyễn Hà Giang - 2009 10 Cây AVL Thêm nút vào phức tạp Thêm nút vào giống thêm vào NPTK Tính lại số cân nút có ảnh hưởng Sau xét có bị cân ko, có phải cân lại Cân nút theo phép xoay thích hợp! Nguyễn Hà Giang - 2009 89 Cây AVL Khảo sát việc thêm nút vào Sau thêm vào nút nút Có thể cân ? Trường hợp ko ? Nguyên nhân: Lệch trái: cân nút thêm vào vị trí sau bên trái nút trước gần bị lệnh trái Lệch phải: ngược với lệch trái Nguyễn Hà Giang - 2009 90 Cây AVL -1 0 0 0 B1 U2 U3 0 B3 U4 U5 Nguyễn Hà Giang - 2009 0 B2 U1 -1 U6 U7 U8 B4 B5 B6 U9 0 U10 U11 91 U12 Cây AVL Xoay để cân lại r p T1 h=n Nguyễn Hà Giang - 2009 T3 h=n T2 h=n 92 Cây AVL Khi thêm x vào T1 r p T1 h=n T3 h=n T2 h=n x Nguyễn Hà Giang - 2009 93 Cây AVL Sau cân p 0 T1 h=n r h = n+1 x Nguyễn Hà Giang - 2009 T2 h=n T3 h=n 94 Cây AVL Thêm vào T2 nào? r p T1 h=n Nguyễn Hà Giang - 2009 T3 h=n T2 h=n 95 Cây AVL Khi thêm x vào T2 r p -1 T1 h=n T3 h=n T2 h=n x Nguyễn Hà Giang - 2009 96 Cây AVL Khi thêm x vào T2: xoay kép p Xoay lần xoay trái P Xoay lần xoay phải r r -1 T3 h=n 1 T1 h=n T2-1 h=n-1 q T2-2 h=n-1 x Nguyễn Hà Giang - 2009 97 Cây AVL Khi thêm x vào T2 q T3 h=n p T1 h=n r T2-2 h=n-1 T2-1 h=n-1 x Nguyễn Hà Giang - 2009 98 Cây AVL Khi thêm x vào T2 q p T1 h=n -1 T2-1 h=n-1 T2-2 h=n-1 r T3 h=n x Nguyễn Hà Giang - 2009 99 Cây AVL Tóm lại: thêm vào AVL Khi thêm vào bị cân Thực cân lại, có trường hợp Có thể dùng phép xoay Dùng phép xoay trường hợp Trường hợp lệch bên phải tương tự (đối xứng) Nguyễn Hà Giang - 2009 100 Cây AVL Cài đặt AVL: Bổ sung thêm trường bf cho cấu trúc BST typedef struct node { DataType info; int bf; struct node * left; struct node * right; } NODE; typedef NODE * NodePtr; NodePtr pAVLTree; Nguyễn Hà Giang - 2009 Chỉ số cân balance factor Trỏ nút gốc AVL 101 Cây AVL Các thao tác AVL tương tự BST Khác biệt thêm/xoá làm cân Ảnh hưởng đến số cân nhánh liên quan Sử dụng thao tác xoay phải, trái để cân Sinh viên tự tìm hiểu & đọc thêm phần AVL Nguyễn Hà Giang - 2009 102 Bài tập Xây dựng nhị phân tìm kiếm cân AVL cho danh sách phần tử có thứ tự nhập vào là: 20 11 30 18 Nguyễn Hà Giang - 2009 103 ... 10 cách 50 55 10 25 55 Xóa 10 30 50 45 30 25 45 Chọn nút có khố lớn bên trái Nguyễn Hà Giang - 2009 45 Binary Search Tree Delete: nút 10 cách 50 55 10 25 45 55 25 Xóa 10 30 50 30 45 Chọn nút... found 25 30 45 10 25 Nguyễn Hà Giang - 2009 33 Binary Search Tree Tìm ( 25) 10 5 10 < 25, right 30 30 > 25, left 45 25 = 25, found 25 < 25, right 45 > 25, left 30 > 25, left 30 45 10 10 < 25, right... họa xóa ( 25) 52 P 27 15 66 f 39 19 25 60 42 58 99 62 31 Nguyễn Hà Giang - 2009 50 Binary Search Tree Minh họa xóa ( 25) 52 P 27 15 66 f 39 19 Nguyễn Hà Giang - 2009 31 60 42 58 99 62 51