Thông tin tài liệu
Cay (Tree) Khái niệm Cây đồ thị định hướng thỏa mãn tính chất sau: Có đỉnh đặc b iệt gọi g ố c M ỗi đỉnh c b ất kỳ gốc, tổn đỉnh p có cung từ p đến c Đỉnh p gọi cha đỉnh c, c p Có đường từ gốc tới đỉnh G ốc Cai dat cay bang mang tro Template ro o t class Node { Item data; L ist children; A \ } B C N od e* root; / (X em hinh v e ) I E x Cai dat cay bang hai tro template class Node { Item data; Node* firstChild; Node* nextSiblii } ; N od e* root; Duyệt Duyệt theo thứ tự trước • Thăm g ố c r • D uyệt lầ n lượt T p , T k theo thứ tự trư c mức mức mức A BEFCD G Duyệt theo thứ tự trước Template Preorder (Node* root) { visit (root); for each child r Preorder (r); Duyệt theo thứ tự sau • D u yệt lầ n lượt T p , T k theo th ứ • Thăm g ố c r mức mức mức EFBC G D A tự sau Duyệt theo thứ tự sau Template Postorder (Node* root) { for each child r Postorder (r); visit (root); } Cây nhị phân template Class Node { Item data; // Dữ liệu chứa đỉnh Node* left; Node* right; Các kiểu nhị phân đủ Cây nhị phân cân bằng: ĐỘ cao bến trái bên phải chênh khơng q Problem Bài tốn: Cho danh sách đối tượng, tổ chức cấu trúc liệu đ ể thực phép toán cách hiệu quả: • Tim kiếm (search) • Thêm vào (insert) • Xóa (delete) Đáp án: Dùng cấu trúc tìm kiếm nhị phân Cây tìm kiếm nhị phân • Cây nhị phân rỗng tìm kiếm nhị phân • Cây nhị phân khơng rỗng T tìm kiếm nhị phân nếu: - Khóa gốc lớn khóa tất đỉnh trái T l nhỏ khóa tất đỉnh phải Tr a - Cây trái T, phải T r tìm kiếm nhị phân Phép tốn tìm kiếm (search) binarySearchTree (Node* root, lookingData) { if (Root = = NULL) return NULL; else if (root.data = = lookingData) return root else if (root.data < lookingData) return binarySearchTree (root.right, lookingData) else return binarySearchTree (root.left, lookingData) } Phép tốn tìm kiếm phần tử nhỏ - lớn //Root != NULL Min (Node* root) { if (Root left = = NULL) return root else return Min (root.left) } Max (Node* root) { if (Root right = = NULL) return root else return Max (root.right) } Phép toán thêm vào (insert) insert (Node* root, insertData) { if (Root = = NULL) Root
Ngày đăng: 16/04/2014, 17:24
Xem thêm: Giáo án - Bài giảng: KHÁI NIỆM CÂY TRONG LẬP TRÌNH, Giáo án - Bài giảng: KHÁI NIỆM CÂY TRONG LẬP TRÌNH