Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
1,28 MB
Nội dung
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Lý thuyết Phần ((Chương g 4)) Cây Khái niệm Một số ứng dụng set map Vũ Anh Dũng - Khoa CNTT Khái niệm Định nghĩa Cây tập nút Tập rỗng Bao gồm nút đặc biệt, biệt gọi gốc r Một tập rỗng khác rỗng T1, T2,…,T Tk mà có gốc nối trực tiếp với gốc r r Vũ Anh Dũng - Khoa CNTT Khái niệm Gốc gọi r, r gọi cha nút gốc Cây tổng quát Vũ Anh Dũng - Khoa CNTT Khái niệm Mỗi nút, loại trừ nút gốc có nút cha Cây y Vũ Anh Dũng - Khoa CNTT Khái niệm Nút lá(leaf) nút con, ví dụ : P,Q Các nút có nút cha gọi nút anh-chị-em (sibling), ví dụ : K,L,M Vũ Anh Dũng - Khoa CNTT Khái niệm Một đường từ nút n1 đến nk định nghĩa chuỗi nút n1, n2, n3, ,nk nút ni cha nút ni+1 với 1≤i[...]... dạng hậu tố Ví dụ giả sử đầu vào là ab+cde+** Hai H i ký tự t đầu đầ tiên tiê là các á toán hạng, vì thế chúng ta tạo hai nút và đNy con trỏ của hai nút này vào ngăn xếp Vũ Anh Dũng - Khoa CNTT 19 Xây dựng cây nhị phân biểu thức Tiếp đến chúng ta đọc được một toán tử, vì thế hai con trỏ trong ngăn xếp được lấy ra, ra một cây mới được tạo và con trỏ tới nó được đNy vào ngăn xếp Vũ Anh Dũng - Khoa... thức Tiếp theo c d e được đọc và ứng với mỗi toán hạng ta tạo mội nút cây và đNy con trỏ tương ứng của nó vào ngăn xếp Vũ Anh Dũng - Khoa CNTT 21 Xây dựng cây nhị phân biểu thức Tiếp theo dấu + được đọc, vì thế hai cây được kết hợp Vũ Anh Dũng - Khoa CNTT 22 Xây dựng cây nhị phân biểu thức Tiếp theo * được đọc, ta lấy ra hai con trỏ của hai cây trong ngăn xếp và tạo một cây mới với * là gốc Vũ... rỗng Vũ Anh Dũng - Khoa CNTT 15 Cài đặt cây nhị phân struct BinaryNode { Object element; // The data in the node Binar Node * left BinaryNode left; // Left child BinaryNode * right; // Right child }; Cấu trúc 1 nút trên cây nhị phân Vũ Anh Dũng - Khoa CNTT 16 Cây nhị phân biểu thức Nút lá của cây là các toán hạng, như là hằng số hoặc các biến Các nút khác là các toán tử (a + (b * c)) + (((d * e)... 11 Duyệt cây Giả sử chúng ta muốn đưa ra danh sách tên của tất cả các file trong một thư mục Cách đưa ra của chúng ta là với các file nằm ở độ sâu thì khi đưa ra ta sẽ đưa ra tên của file đó dịch vào khoảng trống (tab) Vũ Anh Dũng - Khoa CNTT 12 Duyệt cây void FileSystem::listAll ( int depth = 0 ) const { 1 p printName( t a e( dept depth ); // Print t t the e name a e o of t the e object 2 if (... ta lấy ra hai con trỏ của hai cây trong ngăn xếp và tạo một cây mới với * là gốc Vũ Anh Dũng - Khoa CNTT 23 Xây dựng cây nhị phân biểu thức Cuối cùng, ký hiệu cuối cùng được đọc, hai cây được kết hợp và một con trỏ tới cây kết quả còn lại trong ngăn xếp Vũ Anh Dũng - Khoa CNTT 24