Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 5.2: Tree structure. Những nội dung chính được trình bày 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. Mời các bạn cùng tham khảo.
Tree Structure Nguyễn Hà Giang - 2008 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 Nguyễn Hà Giang - 2008 Cấu trúc liệu Nguyễn Hà Giang - 2008 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 - 2008 Cấu trúc Sao máy tính, lại thể ngược? Nguyễn Hà Giang - 2008 Khái niệm gốc J Cạnh nút Z B Q A R K Nguyễn Hà Giang - 2008 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: khơng phải nút nút gốc 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 - 2008 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 - 2008 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 - 2008 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 - 2008 10 Binary Search Tree x=9 10>9, left 5 2, left > 2, left 45 = 2, found = 2, found 25 30 45 10 25 Nguyễn Hà Giang - 2008 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 25 = 25, found 25 Nguyễn Hà Giang - 2008 34 Binary Search Tree Thời gian tìm kiếm Dựa chiều cao Cây cân O(log(n)) Cây ko cân O(n) Tương tự tìm kiếm danh sách, mảng ko Nguyễn Hà Giang - 2008 35 Binary Search Tree Search Xuất phát từ gốc Nếu nút = NULL => ko tìm thấy Nếu khố x = khóa nút gốc => tìm thấy Ngược lại khố x < khố nút gốc => Tìm bên trái Ngược lại => tìm bên phải Nguyễn Hà Giang - 2008 36 Binary Search Tree Search NodePtr Search(NodePtr node, int x) { NodePtr p; p = node; if (p != NULL) if (node->info >x) p = Search(node->left, x); else p = Search(node->right, x); return p; } Nguyễn Hà Giang - 2008 37 Binary Search Tree Xây dựng BST Chèn Xóa Ln trì tính chất Giá trị nhỏ bên trái Giá trị lớn bên phải Nguyễn Hà Giang - 2008 38 Binary Search Tree Insert Thực tìm kiếm giá trị x Tìm đến cuối nút Y ( x ko tồn cây) Nếu x < y, thêm nút x bên trái Y Nếu x > y, thêm nút x bên phải Y 10 25 45 Y 20 Nguyễn Hà Giang - 2008 30 X 39 Binary Search Tree void Insert(NodePtr pTree, int x) { NodePtr node; if ( pTree == NULL) return; if (pTree->info == x) return; if (pTree->info > x) { if (pTree->left == NULL) { node = CreateNode(x); pTree->left = node; } else Insert(pTree->left, x); } else if (pTree->right == NULL) { node = CreateNode(x); pTree->right = node; } else Insert(pTree->right, x); } Nguyễn Hà Giang - 2008 40 Binary Search Tree Delete: xóa phải đảm bảo BST Thực tìm nút có giá trị x Nếu nút lá, delete nút Ngược lại Thay nút hai nút sau Y nút lớn bên trái Z nút nhỏ bên phải Delete nút Y Z thay giá trị tương ứng Nguyễn Hà Giang - 2008 41 Binary Search Tree Trường hợp 1: nút p nút 10 10 Xóa 25 30 25 Nguyễn Hà Giang - 2008 45 30 45 42 Trường hợp 2: p có con, chọn nút làm nút chỗ nút cha, sau xóa nút cha 10 10 Xóa 30 25 Nguyễn Hà Giang - 2008 45 30 25 45 43 Binary Search Tree Trường hợp 3: nút p có con, chọn nút thay theo cách sau Nút lớn bên trái Nút nhỏ bên phải Nguyễn Hà Giang - 2008 44 Binary Search Tree Delete: nút 10 cách 50 55 10 25 Nguyễn Hà Giang - 2008 55 Xóa 10 30 50 45 30 25 45 45 Binary Search Tree Delete: nút 10 cách 50 55 10 25 Nguyễn Hà Giang - 2008 45 55 25 Xóa 10 30 50 30 45 46 ...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 - 2008 Cấu trúc liệu Nguyễn Hà Giang - 2008 Cấu trúc Tập hợp nút... cao Nút Nguyễn Hà Giang - 2008 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 - 2008 Nút anh em Nội dung Cấu trúc. .. NodePtr Nguyễn Hà Giang - 2008 pTree; Chứa thông tin nút Cấu trúc nút Trỏ đến nút phải Trỏ đến nút trái Trỏ nút gốc NP 16 Binary Tree pTree Con trỏ pTree trỏ đến nút gốc Nguyễn Hà Giang - 2008