Danh mục tài liệu

Bài giảng Cấu trúc dữ liệu: Phần 2 - ĐH Cần Thơ

Số trang: 79      Loại file: pdf      Dung lượng: 1.72 MB      Lượt xem: 14      Lượt tải: 0    
Xem trước 8 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Nối tiếp phần 1 cuốn "Bài giảng Cấu trúc dữ liệu" mời các bạn cùng tìm hiểu phần 2 để nắm bắt một số thông tin cơ bản về cấu trúc cây; tập hợp; đồ thị. Hy vọng tài liệu là nguồn thông tin hữu ích cho quá trình học tập và nghiên cứu của các bạn.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu: Phần 2 - ĐH Cần Thơ Cấu trúc dữ liệu Chương III:Cấu trúc cây CHƯƠNG III CẤU TRÚC CÂY (TREES) TỔNG QUAN 1. Mục tiêu Sau khi học xong chương này, sinh viên phải: ¾ Nắm vững khái niệm về cây ¾ Cài đặt được cây (trees) và thực hiện các phép toán trên cây. 2. Kiến thức cơ bản cần thiết Để học tốt chương này, sinh viên phải nắm vững kỹ năng lập trình căn bản như: ¾ Kiểu mẩu tin (record) , kiểu mảng (array) và kiểu con trỏ (pointer) ¾ Các cấu trúc điều khiển, lệnh vòng lặp. ¾ Lập trình theo từng modul (chương trình con) và cách gọi chương trình con đó. ¾ Lập trình đệ qui và gọi đệ qui. ¾ Kiểu dữ liệu trừu tượng danh sách 3. Tài liệu tham khảo [1] Aho, A. V. , J. E. Hopcroft, J. D. Ullman. Data Structure and Algorihtms, Addison– Wesley; 1983 [2] Đỗ Xuân Lôi . Cấu trúc dữ liệu và giải thuật. Nhà xuất bản khoa học và kỹ thuật. Hà nội, 1995. (chương 6- Trang 122; chương 10 trang 274) [3] N. Wirth Cấu trúc dữ liệu + giải thuật= Chương trình, 1983. [4] Nguyễn Trung Trực, Cấu trúc dữ liệu. BK tp HCM, 1990. (chương 3 trang 112; chương 5 trang 299) [5] Lê Minh Trung ; “Lập trình nâng cao bằng Pascal với các cấu trúc dữ liệu “; 1997 (chương 9, 12) 4. Nội dung cốt lõi Trong chương này chúng ta sẽ nghiên cứu các vấn đề sau: ¾ Các thuật ngữ cơ bản. Trang 73 Cấu trúc dữ liệu Chương III: Cấu trúc cây ¾ Kiểu dữ liệu trừu tượng Cây ¾ Cài đặt cây ¾ Cây nhị phân ¾ Cây tìm kiếm nhị phân I. CÁC THUẬT NGỮ CƠ BẢN TRÊN CÂY Cây là một tập hợp các phần tử gọi là nút (nodes) trong đó có một nút được phân biệt gọi là nút gốc (root). Trên tập hợp các nút này có một quan hệ, gọi là mối quan hệ cha - con (parenthood), để xác định hệ thống cấu trúc trên các nút. Mỗi nút, trừ nút gốc, có duy nhất một nút cha. Một nút có thể có nhiều nút con hoặc không có nút con nào. Mỗi nút biểu diễn một phần tử trong tập hợp đang xét và nó có thể có một kiểu nào đó bất kỳ, thường ta biểu diễn nút bằng một kí tự, một chuỗi hoặc một số ghi trong vòng tròn. Mối quan hệ cha con được biểu diễn theo qui ước nút cha ở dòng trên nút con ở dòng dưới và được nối bởi một đoạn thẳng. Một cách hình thức ta có thể định nghĩa cây một cách đệ qui như sau: 1. Định nghĩa ¾ Một nút đơn độc là một cây. Nút này cũng chính là nút gốc của cây. ¾ Giả sử ta có n là một nút đơn độc và k cây T1,.., Tk với các nút gốc tương ứng là n1,.., nk thì có thể xây dựng một cây mới bằng cách cho nút n là cha của các nút n1,.., nk. Cây mới này có nút gốc là nút n và các cây T1,.., Tk được gọi là các cây con. Tập rỗng cũng được coi là một cây và gọi là cây rỗng kí hiệu . Ví dụ: xét mục lục của một quyển sách. Mục lục này có thể xem là một cây Hình III.1 - Cây mục lục một quyển sách Nút gốc là sách, nó có ba cây con có gốc là C1, C2, C3. Cây con thứ 3 có gốc C3 là một nút đơn độc trong khi đó hai cây con kia (gốc C1 và C2) có các nút con. Nếu n1,.., nk là một chuỗi các nút trên cây sao cho ni là nút cha của nút ni+1, với i=1..k-1, thì chuỗi này gọi là một đường đi trên cây (hay ngắn gọn là đường đi ) từ n1 đến nk. Độ dài Trang 74 Cấu trúc dữ liệu Chương III: Cấu trúc cây đường đi được định nghĩa bằng số nút trên đường đi trừ 1. Như vậy độ dài đường đi từ một nút đến chính nó bằng không. Nếu có đường đi từ nút a đến nút b thì ta nói a là tiền bối (ancestor) của b, còn b gọi là hậu duệ (descendant) của nút a. Rõ ràng một nút vừa là tiền bối vừa là hậu duệ của chính nó. Tiền bối hoặc hậu duệ của một nút khác với chính nó gọi là tiền bối hoặc hậu duệ thực sự. Trên cây nút gốc không có tiền bối thực sự. Một nút không có hậu duệ thực sự gọi là nút lá (leaf). Nút không phải là lá ta còn gọi là nút trung gian (interior). Cây con của một cây là một nút cùng với tất cả các hậu duệ của nó. Chiều cao của một nút là độ dài đường đi lớn nhất từ nút đó tới lá. Chiều cao của cây là chiều cao của nút gốc. Độ sâu của một nút là độ dài đường đi từ nút gốc đến nút đó. Các nút có cùng một độ sâu i ta gọi là các nút có cùng một mức i. Theo định nghĩa này thì nút gốc ở mức 0, các nút con của nút gốc ở mức 1. Ví dụ: đối với cây trong hình III.1 ta có nút C2 có chiều cao 2. Cây có chiều cao 3. nút C3 có chiều cao 0. Nút 2.1 có độ sâu 2. Các nút C1,C2,C3 cùng mức 1. 2. Thứ tự các nút trong cây Nếu ta phân biệt thứ tự các nút con của cùng một nút thì cây gọi là cây có thứ tự, thứ tự qui ước từ trái sang phải. Như vậy, nếu kể thứ tự thì hai cây sau là hai cây khác nhau: Hình III.2: Hai cây có thứ tự khác nhau Trong trường hợp ta không phân biệt rõ ràng thứ tự các nút thì ta gọi là cây không có thứ tự. Các nút con cùng một nút cha gọi là các nút anh em ruột (siblings). Quan hệ trái sang phải của các anh em ruột có thể mở rộng cho hai nút bất kỳ theo qui tắc: nếu a, b là hai anh em ruột và a bên trái b thì các hậu duệ của a là bên trái mọi hậu duệ của b. 3. Các thứ tự duyệt cây quan trọng Duyệt cây là một qui tắc cho phép đi qua lần lượt tất cả các nút của cây mỗi nút đúng một lần, danh sách liệt kê các nút (tên nút hoặc giá trị chứa bên trong nút) theo thứ tự đi qua gọi là danh sách duyệt cây. Có ba cách duyệt cây quan trọng: Duyệt tiền tự (preorder), duyệt trung tự (inorder), duyệt hậu tự (posorder). Có thể định nghĩa các phép duyệt cây tổng quát (xem hình III.3) một cách đệ qui như sau: Trang 75 Cấu trúc dữ liệu Chương III: Cấu trúc cây Hình III.3 ...