Các khái niệmCác CTDL mảng, danh sách đã nghiên cứu trong bài 3 được gọi là các cấu trúc tuyến tính, nghĩa là quan hệ lân cận giữa các thành phần được hiển thị ra.Trên thực tế, có nhiều đối tượng mà quan hệ lân cận giữa các phần tử không được hiển thị ra, gọi là các cấu trúc phi tuyến. Các CTDL cây, cấu trúc đồ thị, cấu trúc đa danh sách, danh sách tổng quát đều là các cấu trúc phi tuyến.Trong đó cây là 1 CTDL phi tuyến được ứng dụng rất nhiều trong các mô hình tin học.Khái niệm về cây: Cây (tree) là 1 tập hợp hữu hạn các nút trong đó có 1 nút đặc biệt gọi là nút gốc (root). Giữa các nút có 1 quan hệ phân cấp gọi là Quan hệ cha con.
BÀI 4: CÂY NHỊ PHÂN 4.1 Các khái niệm 4.2 Cây nhị phân 4.3 Một số ứng dụng 4.4 Bài tập 4.1 Các khái niệm Các CTDL mảng, danh sách nghiên cứu gọi cấu trúc tuyến tính, nghĩa quan hệ lân cận phần tử hiển thị Trên thực tế, có nhiều đối tượng mà quan hệ lân cận phần tử không hiển thị ra, gọi cấu trúc phi tuyến Các CTDL cây, cấu trúc đồ thị, cấu trúc đa danh sách, danh sách tổng quát cấu trúc phi tuyến Trong CTDL phi tuyến ứng dụng nhiều mơ hình tin học Khái niệm Khái niệm: Cây (tree) tập hợp hữu hạn nút có nút đặc biệt gọi nút gốc (root) Giữa nút có quan hệ phân cấp gọi “quan hệ cha con” Định nghĩa đệ quy: Một nút Nút gốc Nếu n nút T1, T2, …, Tk với n1, n2, …, nk gốc, T tạo lập cách cho n trở thành cha nút n1, n2, …, nk; nghĩa n gốc T1, T2, …, Tk các (subtrees) gốc Lúc n1, n2, …, nk nút n Quy ước: Cây có nút gọi rỗng (null tree) Ví dụ Xét có dạng sau: A nút gốc B, C, D gốc của A A cha B, C, D G, H, I D 4.1 Các khái niệm Số nút gọi cấp nút Ví dụ: cấp A 3, cấp B 2, cấp C Nút có cấp gọi nút hay nút tận Ví dụ: nút E, F, C, G, J, K I nút Nút nút gọi nút nhánh Ví dụ: nút A, B, D, H nút nhánh Cấp cao nút gọi cấp Ví dụ: cho cấp Gốc người ta gán cho số mức 1, nút cha có mức i nút có mức i+1 Ví dụ: nút A có số mức 1, D có số mức 2, G có số mức J có số mức Mức nút 4.1 Các khái niệm Chiều cao hay chiều sâu số mức lớn nút có Ví dụ: cho có chiều cao Nếu n1, n2, …, nk dãy nút mà ni cha ni+1 với ≤ i < k dãy gọi đường từ n1 đến nk Độ dài đường số nút đường trừ Ví dụ: độ dài đường từ A tới G 2, từ A tới K Nếu thứ tự nút coi trọng có thứ tự, ngược lại khơng có thứ tự Thứ tự nút đặt từ trái sang phải Tập hợp phân biệt gọi rừng (forest), rừng Nếu bỏ nút gốc tạo thành rừng Ví dụ Có nhiều đối tượng biểu diễn cấu trúc cây, như: Mục lục sách với phần, chương, bài, mục Cấu trúc thư mục đĩa: thư mục gốc coi gốc với thư mục tập tin nằm thư mục gốc Gia phả dòng họ Một biểu thức số học gồm phép tốn cộng, trừ, nhân, chia lưu trữ mà toán hạng lưu trữ nút lá, toán tử lưu trữ nút nhánh, nhánh biểu thức Cây biểu diễn biểu thức số học Toán hạng lưu trữ nút Toán tử (hay phép toán) lưu trữ nút nhánh Mỗi nhánh biểu thức Ví dụ: Cây biểu diễn biểu thức (A / B + C) * (D – E) 4.2 Cây nhị phân 4.2.1 Khái niệm tính chất 4.2.2 Biểu diễn nhị phân 4.2.3 Phép duyệt nhị phân 10 4.3.2 Cây nhị phân tìm kiếm Khái niệm: Cây nhị phân tìm kiếm (Binary Search Tree – BST) nhị phân nút, khóa nút xét lớn khóa tất nút thuộc trái nhỏ khóa tất nút thuộc phải Ứng dụng: Nhờ ràng buộc giá trị khóa BST, việc tìm kiếm trở nên có định hướng Do cấu trúc nên việc tìm kiếm trở nên nhanh đáng kể Chi phí tìm kiếm trung bình có N nút khoảng log2N 31 4.3.2 Cây nhị phân tìm kiếm Đánh giá: Các thao tác BST có độ phức tạp O(h), với h chiều cao BST Do đó, trường hợp xấu nhất, bị suy biến thành danh sách liên kết đơn với thao tác có độ phức tạp O(N) Kết luận: Để có độ phức tạp giải thuật ln O(log2N) cần có cải tiến cấu trúc BST: nhị phân tìm kiếm cân hoàn toàn, AVL, 32 4.3.2 Cây nhị phân tìm kiếm Dãy số mơ tả cấu trúc nhị phân tìm kiếm: 10 Quá trình tìm kiếm giá trị X = 5: So sánh X với nút gốc (=7), X < 7, tìm kiếm trái So sánh X với nút gốc (=4), X > 4, tìm kiếm phải So sánh X với nút gốc (=5) X = Phép tìm kiếm dừng 33 4.3.3 Cây BST cân hoàn toàn Khái niệm: Cây nhị phân tìm kiếm cân hồn tồn nhị phân tìm kiếm (BST) mà nút nó, số nút trái chênh lệch khơng so với số nút phải Đánh giá: Nếu cân đối việc tìm kiếm nhanh Đối với cân hồn tồn có N nút, trường hợp xấu phải tìm qua log2N phần tử 34 4.3.3 Cây BST cân hồn tồn Nhận xét: Một BST khó đạt trạng thái cân hoàn toàn dễ cân thêm hay xóa nút làm cân (xác suất lớn) Chi phí cân lại lớn phải thao tác tồn Thực tế khơng thể sử dụng cấu trúc cân hồn toàn này, mà thường sử dụng cấu trúc khác có đặc tính giống cân hồn tồn ổn định cân AVL 35 4.3.3 Cây BST cân hoàn toàn This image cannot currently be display ed a) b) Cây BST a) nhị phân tìm kiếm cân hồn tồn Cây BST b) khơng phải nhị phân tìm kiếm cân hoàn toàn 36 4.3.3 Cây BST cân hồn tồn Nếu bổ sung thêm khóa 50 vào BST khơng cân hồn tồn (do vi phạm điều kiện cân 88) 37 4.4.4 Cây cân AVL Khái niệm: Cây nhị phân tìm kiếm cân (AVL) BST mà nút độ cao trái phải chênh lệch không Cây nhị phân tìm kiếm cân hồn tồn AVL, điều ngược lại chưa Lịch sử: AVL tên viết tắt tác giả người Nga AdelsonVelskii Landis (1962) Thuật ngữ AVL thường thay cho BST cân Ứng dụng nhiều toán khác thu hút nhiều nghiên cứu Một số loại CTDL phát triển thêm từ AVL: đỏ38 đen (Red-Black Tree), B-Tree, … 4.4.4 Cây cân AVL Đánh giá: Cây AVL cấu trúc liệu ổn định hẳn nhị phân tìm kiếm cân hồn tồn, thêm, xóa nút làm thay đổi chiều cao, trường hợp cân có khả xảy Cây AVL với chiều cao khống chế cho phép thực thi thao tác tìm thêm hủy với chi phí O(log2N) bảo đảm khơng suy biến thành O(N) Phép xoay AVL: Khi xảy cân bằng, để đưa trạng thái cân phải thực phép xoay nút xảy cân Yêu cầu: minh họa trường hợp cân thực phép xoay để trở lại trạng thái cân 39 4.4.4 Cây cân AVL Đây AVL nhị phân tìm kiếm cân hồn tồn Nếu bổ sung thêm khóa 50 vào AVL khơng cân (do vi phạm điều kiện cân 88) 40 Kết luận Rõ ràng nhị phân cách tổ chức theo cấu trúc liên kết tỏ thích hợp cách tổ chức mảng chiều Tuy nhiên, cách cài đặt có nhược điểm định: Tốc độ xử lý chậm có nút gốc truy cập trực tiếp nút khác truy cập sau qua số bước duyệt Tốn nhớ trường info phải có thêm trường left right nút để lưu trữ địa nút trái nút phải nút 41 4.4 Bài tập Mối liên hệ số nút, chiều cao loại cây: a) Trong nhị phân có số nút N, loại có chiều cao lớn H = ? b) Trong nhị phân có số nút N, loại có chiều cao nhỏ H = ? c) Trong nhị phân có chiều cao H, loại có số nút lớn N = ? d) Trong nhị phân có chiều cao H, loại có số nút nhỏ N = ? e) Có khác xét nhị phân biểu diễn biểu thức số học gồm phép tốn ngơi? 42 4.4 Bài tập Cây nhị phân biểu diễn biểu thức: Cho biểu thức số học: A + (B – C) * D / E + F Vẽ nhị phân biểu diễn biểu thức số học Cho biết chiều cao cây? Duyệt theo thứ tự trước (giữa, sau) Viết hàm đệ quy duyệt theo thứ tự trước (giữa, sau) đặc điểm hàm đệ quy Liên hệ với toán ký pháp Ba Lan 43 4.4 Bài tập Cây nhị phân tìm kiếm BST: Cho dãy số: 10 Vẽ nhị phân BST biểu diễn dãy số Cho biết chiều cao cây? Duyệt theo thứ tự trước (giữa, sau) Viết hàm đệ quy duyệt theo thứ tự trước (giữa, sau) đặc điểm hàm đệ quy 44 4.4 Bài tập Cây cân AVL: Cho dãy số: 10 Vẽ cân AVL biểu diễn dãy số Cho biết chiều cao cây? Chỉ rõ trường hợp cân trình bổ sung số vào AVL cách xoay để trở lại trạng thái cân Duyệt theo thứ tự trước (giữa, sau) Viết hàm đệ quy duyệt theo thứ tự trước (giữa, sau) đặc điểm hàm đệ quy Tại thực tế AVL sử dụng rộng rãi BST? 45 ... cho: H I D J E B K F L G C A 27 4. 3 Một số ứng dụng 4. 3.1 Cây biểu diễn biểu thức 4. 3.2 Cây nhị phân tìm kiếm (BST) 4. 3.3 Cây BST cân hồn toàn 4. 3 .4 Cây cân (AVL) 28 4. 3.1 Cây biểu diễn biểu thức... dụ: Cây biểu diễn biểu thức (A / B + C) * (D – E) 4. 2 Cây nhị phân 4. 2.1 Khái niệm tính chất 4. 2.2 Biểu diễn nhị phân 4. 2.3 Phép duyệt nhị phân 10 4. 2.1 Khái niệm tính chất Khái niệm: Cây nhị phân... đặc biệt nhị phân hồn chỉnh Trong nhị phân có số lượng nút nhị phân hồn chỉnh có chiều cao nhỏ 14 4.2.2 Biểu diễn nhị phân Có cách để biểu diễn nhị phân: Biểu diễn mảng Biểu diễn cấu trúc liên