Danh mục

Cấu trúc dữ liệu và giải thuật - chương 11

Số trang: 25      Loại file: ppt      Dung lượng: 620.50 KB      Lượt xem: 19      Lượt tải: 0    
tailieu_vip

Xem trước 0 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Chương 11: cây đa phân của bộ slide bài giảng đầy đủ về môn CTDL & GT của trường ĐHBK TP.HCM. Trình bày ngắn gọn dễ hiểu với những hiệu ứng minh họa sinh động.Cây đa phân còn gọi là cây rỗng hoặc có một node gọi là gốc và nhiều cây con.
Nội dung trích xuất từ tài liệu:
Cấu trúc dữ liệu và giải thuật - chương 11 A CCẤU TRÚC DỮ LIỆU VÀ B F GIẢI THUẬT (501040) D E G Chương 11: Cây đa phân K H Định nghĩa Cây đa phân Cây rỗng Hoặc có một node gọi là gốc (root) và nhiều cây con. Biểu diễn: Mỗi node gồm có nhiều nhánh con Mỗi node có 2 liên kết first_child và next_sibling Dùng cây nhị phân 2 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Biểu diễn 3 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Biểu diễn dạng nhị phân Nhị phân: left = black right = color 4 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Cây từ điển: Trie 5 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Thiết kế Trie class Trie { public: // Add method prototypes here. private: // data members Trie_node *root; }; const int num chars = 28; struct Trie_node { // data members Record *data; Trie_node *branch[num_chars]; // constructors Trie_node( ); }; 6 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Giải thuật tìm kiếm trên Trie Algorithm trie_search Input: target là khóa cần tìm Output: mẫu tin tìm thấy 1. Bắt đầu tìm từ node root với ký tự đầu tiên của target 2. while (còn node để tìm và chưa xét hết chuỗi target) 2.1. Nhảy đến node con tương ứng tùy theo ký tự từ target 2.2. Xét ký tự kế tiếp trong chuỗi target 3. if (có node và dữ liệu của nó khác rỗng) 3.1. return dữ liệu của node này 4. return not_present End trie_search 7 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Mã C++ tìm kiếm trên Trie Error_code Trie :: trie_search(const Key &target, Record &x) const { int position = 0; char next_char; Trie_node *location = root; while (location != NULL && (next_char = target.key_letter(position)) !=‘ ’) { location = location->branch[alphabetic order(next char)]; position++; } if (location != NULL && location->data != NULL) { x = *(location->data); return success; } else return not present; } 8 Chương 11. Cây đa phân Khoa Công nghệ Thông tinĐH Bách Khoa Tp.HCM Giải thuật thêm vào Trie Algorithm trie_insert Input: new_entry là dữ liệu cần thêm vào Output: cây sau khi thêm vào dữ liệu mới 1. if (cây rỗng) 1.1. Thêm node mới vào đây 1.2. Kết thúc 2. Bắt đầu từ node root và ký tự đầu tiên trong khóa của new_entry 3. while (vẫn chưa xét hết chuỗi của khóa của new_entry) 3.1. next_char là ký tự hiện tại trên khóa 3.2. if (node con tại vị trí next_char không có) //Tìm và thêm các node trung gian không có dữ liệu vào 3.2.1. Thêm một node có dữ liệu rỗng ...

Tài liệu được xem nhiều: