Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
256,84 KB
Nội dung
Cây (Tree)(Tree) Lê Sỹ Vinh Bộ môn Khoa Học Máy Tính – Khoa CNTT ðại Học Công Nghệ - ðHQGHN Email: vinhioi@yahoo.com Kháiniệmcây • Cây là một ñồ thị ñịnh hướng thỏa mãn các tính chất sau: • Có một ñỉnh ñặc biệt ñược gọi là gốc cây • Mỗi ñỉnh C bất kỳ không phải là gốc, tồn tại duy nhất một ñỉnh P có cung ñi từ P ñến C. ðỉnh P ñược gọi là cha của ñỉnh C, và C là con của P • Có ñường ñi duy nhất từ gốc tới mỗi ñỉnh của cây. Gốc ðỉnh trong Lá Cài ñặt cây bằng mảng con trỏ Template <class Item> class Node { Item data; List<Node*> children; } A root } Node<Item>* root; (Xem hình vẽ) B DC E F G Cài ñặt cây bằng hai con trỏ template <class Item> class Node { Item data; Node* firstChild; A root Node* firstChild; Node* nextSibling; }; Node<Item>* root; B C D GFE Duyệt cây Duyệt cây theo thứ tự trước • Thăm gốc r. • Duyệt lần lượt các cây con T 1 , ., T k theo thứ tự trước A B E F C D G Duyệt cây theo thứ tự trước Template <class Item> Preorder (Node* root) { visit (root); for each child r dofor each child r do Preorder (r); } Duyệt cây theo thứ tự sau • Duyệt lần lượt các cây con T 1 , ., T k theo thứ tự sau • Thăm gốc r. E F B C G D A Duyệt cây theo thứ tự sau Template <class Item> Postorder (Node* root) { for each child r do Postorder (r);Postorder (r); visit (root); } Cây nhị phân template <class Item> Class Node { Item data; // Dữ liệu chứa trong mỗi ñỉnh Node* left; Node* right; }; [...]...Các ki u cây nh phân Cây nh phân ñ y ñ Cây nh phân cân b ng: ð cao cây con b n trái và bên ph i chênh nhau không quá m t Problem Bài toán: Cho m t danh sách các ñ i tư ng, hãy t ch c c u trúc d li u ñ th c hi n các phép toán dư i ñây m t cách hi u qu : • Tìm ki m (search) • Thêm vào (insert) • Xóa ñi (delete) ðáp án: Dùng c u trúc cây tìm ki m nh phân Cây tìm ki m nh phân • Cây nh phân r ng là cây tìm... c u trúc cây tìm ki m nh phân Cây tìm ki m nh phân • Cây nh phân r ng là cây tìm ki m nh phân • Cây nh phân không r ng T là cây tìm ki m nh phân n u: – Khóa c a g c l n hơn khóa c a t t c các ñ nh cây con trái TL và nh hơn khóa c a t t c các ñ nh cây con ph i TR – Cây con trái TL và cây con ph i TR là các cây tìm ki m nh phân Phép toán tìm ki m (search) binarySearchTree (Node* root, lookingData) {... ñ nh 2 5 2 (c) 8 3 6 11 9 Xóa ñ nh 7 12 Phép toán xóa (delete) Delete (root, deleteData) { if (deleteData < root.data) Delete (root.left, deleteData); //Lo i cây con trái else if (deleteData > root.data) Delete (root.right, deleteData); // Lo i cây con ph i else if (root.left != NULL && root.right != NULL) { min ← Min (root.right); root ← min; Delete min; } else if (root.left == NULL) root = root.right . án: Dùng cấu trúc cây tìm kiếm nhị phân Cây tìm kiếm nhị phân • Cây nhị phân rỗng là cây tìm kiếm nhị phân • Cây nhị phân không rỗng T là cây tìm kiếm nhị. Cây (Tree)(Tree) Lê Sỹ Vinh Bộ môn Khoa Học Máy Tính – Khoa CNTT ðại Học Công Nghệ - ðHQGHN Email: vinhioi@yahoo.com Khái niệm cây • Cây là một