Xây dựng ứng dụng quản lý sinh viên và tìm kiếm bằng cây AVL

Tài liệu nghiên cứu Xây dựng ứng dụng quản lý sinh viên và tìm kiếm bằng cây avl, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tin Học

2023

44
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Cây AVL Quản Lý Sinh Viên Giới Thiệu Tổng Quan 55 ký tự

Trong kỷ nguyên số, quản lý thông tin, đặc biệt là thông tin sinh viên, đặt ra nhiều thách thức cho các tổ chức giáo dục. Để nâng cao hiệu quả tìm kiếm dữ liệu, cây AVL nổi lên như một giải pháp ưu việt. Là một cấu trúc dữ liệu tự cân bằng, cây AVL giúp giảm thiểu đáng kể thời gian tìm kiếm sinh viên và đảm bảo tính ổn định của cơ sở dữ liệu. Đồ án này khám phá ứng dụng của cây AVL trong quản lý thông tin sinh viên, tập trung vào việc tối ưu hóa thời gian truy vấn và duy trì tính cân bằng của dữ liệu. Cây AVL đảm bảo rằng chiều cao của hai cây con của bất kỳ nút nào không khác nhau quá một. Vì vậy, các thao tác thêm, xóa và tìm kiếm chỉ tốn thời gian O (log n). Cây AVL là cây tìm kiếm nhị phân có khả năng tự cân bằng, được nâng cấp và phát triển dựa trên cây nhị phân tìm kiếm (BST), là cấu trúc dữ liệu đầu tiên có khả năng này. Điểm mấu chốt là cây phải được cân bằng sau mỗi thao tác thêm hoặc xóa. Điều này được thực hiện bằng cách sử dụng các phép quay trái và quay phải. Để biết một nút có cân bằng hay không, hệ số cân bằng được sử dụng. Hệ số cân bằng của một nút là sự khác biệt giữa chiều cao của cây con bên trái và chiều cao của cây con bên phải của nút đó. Hệ số cân bằng = chiều cao con trái – chiều cao con phải. Nghiên cứu này sẽ làm sáng tỏ cách cây AVL duy trì tính cân bằng và ảnh hưởng của nó đến hiệu suất tìm kiếm sinh viên và truy cập dữ liệu. Đồng thời, phân tích chi tiết lợi ích và ứng dụng thực tế của việc tích hợp cây AVL vào quản lý thông tin sinh viên. Hãy cùng nhau khám phá cách áp dụng cây AVL vào ứng dụng quản lý sinh viên, từ đó cải thiện khả năng quản lý dữ liệu trong các hệ thống thông tin phức tạp. Theo tài liệu gốc, “Trong cây AVL tại mỗi node chiều cao của 2 cây con không lệch quá 1”. Điều này đảm bảo hiệu suất hoạt động của cây trong việc quản lý thông tin sinh viên.

1.1. Khái niệm Cây AVL Nền tảng Quản lý Sinh viên

Cây AVL là một dạng cây nhị phân tìm kiếm đặc biệt, được thiết kế để tự động cân bằng sau mỗi thao tác thêm hoặc xóa nút. Điều này đảm bảo rằng chiều cao của cây luôn ở mức tối thiểu, từ đó tối ưu hóa thời gian tìm kiếm sinh viên. Cây AVL là một cây tìm kiếm nhị phân có khả năng tự cân bằng, được nâng cấp và phát triển dựa trên cây nhị phân tìm kiếm (BST), là cấu trúc dữ liệu đầu tiên có khả năng này. Trong cây AVL tại mỗi node chiều cao của 2 cây con không lệch quá 1. Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n). Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cân bằng cây: quay trái, quay phải.

1.2. Ưu điểm của Cây AVL so với Cây Nhị phân tìm kiếm

So với cây nhị phân tìm kiếm thông thường, cây AVL vượt trội hơn nhờ khả năng tự cân bằng. Điều này giúp ngăn chặn tình trạng cây bị lệch, dẫn đến thời gian tìm kiếm sinh viên trở nên tệ nhất là O(n). Trong khi đó, với cây AVL, thời gian tìm kiếm luôn được đảm bảo ở mức O(log n). Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n). Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cân bằng cây: quay trái, quay phải.

1.3. Các thao tác cơ bản trên Cây AVL Quay trái Quay phải

Để duy trì tính cân bằng sau khi thêm hoặc xóa nút, cây AVL sử dụng các phép quay: quay trái và quay phải. Các phép quay này giúp tái cấu trúc cây một cách hiệu quả, đảm bảo chiều cao của cây luôn ở mức tối ưu.Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cân bằng cây: quay trái, quay phải. Để biết được node của cây có cân bằng hay chưa ta dùng hệ số cân bằng.

II. Thách Thức Quản Lý Sinh Viên Vì Sao Cần Cây AVL 58 ký tự

Quản lý số lượng lớn thông tin sinh viên đặt ra nhiều thách thức về hiệu suất tìm kiếm và tính toàn vẹn của dữ liệu. Các phương pháp quản lý truyền thống có thể trở nên chậm chạp và kém hiệu quả khi số lượng sinh viên tăng lên. Cây AVL cung cấp một giải pháp hiệu quả để giải quyết những vấn đề này, đảm bảo khả năng truy cập và quản lý thông tin sinh viên một cách nhanh chóng và tin cậy. Cây AVL là một cây tìm kiếm nhị phân có khả năng tự cân bằng. Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n). Theo tài liệu gốc, “Trong thời đại ngày nay, quản lý thông tin nói chung và quản lý thông tin sinh viên nói riêng là một công việc khó khăn đối với các tổ chức giáo dục và các doanh nghiệp liên quan”. Việc áp dụng cây AVL vào bài toán quản lý sinh viên là một giải pháp khả thi và hiệu quả.

2.1. Vấn đề về hiệu suất Tìm Kiếm Thông Tin Sinh Viên

Khi số lượng sinh viên tăng lên, việc tìm kiếm thông tin bằng các phương pháp tuyến tính (ví dụ: duyệt danh sách) trở nên ngày càng chậm chạp. Cây AVL, với thời gian tìm kiếm O(log n), giúp giảm thiểu đáng kể thời gian truy vấn, đảm bảo trải nghiệm người dùng tốt hơn.

2.2. Nguy cơ Mất Cân Bằng Dữ Liệu trong Cây Nhị phân

Cây nhị phân thông thường có thể bị lệch, đặc biệt khi dữ liệu được thêm vào theo thứ tự tăng dần hoặc giảm dần. Điều này dẫn đến thời gian tìm kiếm trở thành O(n), tương đương với việc duyệt danh sách. Cây AVL giải quyết vấn đề này bằng cách tự động cân bằng.

2.3. Yêu Cầu về Tính Toàn Vẹn Dữ Liệu Sinh Viên

Trong môi trường giáo dục, tính chính xác và toàn vẹn của thông tin sinh viên là vô cùng quan trọng. Cây AVL, với khả năng duy trì cấu trúc ổn định, giúp đảm bảo dữ liệu không bị mất mát hoặc sai lệch trong quá trình thêm, xóa hoặc cập nhật.

III. Cách Triển Khai Cây AVL Quản Lý Sinh Viên Hiệu Quả 59 ký tự

Triển khai cây AVL vào hệ thống quản lý sinh viên đòi hỏi việc thiết kế cấu trúc dữ liệu phù hợp và xây dựng các hàm thao tác (thêm, xóa, tìm kiếm, cập nhật) một cách hiệu quả. Việc lựa chọn ngôn ngữ lập trình và thư viện phù hợp cũng đóng vai trò quan trọng trong quá trình triển khai. Để thực hiện việc tìm kiếm bằng cây AVL ta phải thiết kế một lớp cây AVL để lưu trữ các sinh viên. Lớp node Trước khi xây dựng cây AVL ta xây dựng lớp lưu các node cho cây: Key. Chiều cao của node. Danh dách sinh viên. Con trái, con phải. Các phương thức của lớp: Phương thức khởi tạo.

3.1. Thiết Kế Cấu Trúc Dữ Liệu Sinh Viên cho Cây AVL

Cấu trúc dữ liệu sinh viên cần được thiết kế sao cho phù hợp với yêu cầu của hệ thống. Các thuộc tính như mã số, họ tên, lớp, ngày sinh, địa chỉ cần được định nghĩa rõ ràng và có kiểu dữ liệu phù hợp. Một sinh viên gồm có các thông tin cơ bản : mã số, họ tên, lớp, giới tính, địa chỉ, ngày sinh.

3.2. Xây dựng các Hàm Thao Tác Thêm Xóa Tìm Kiếm

Các hàm thao tác cần được xây dựng một cách cẩn thận để đảm bảo tính chính xác và hiệu quả. Hàm thêm cần đảm bảo tính cân bằng của cây sau khi thêm nút mới. Hàm xóa cần xử lý các trường hợp khác nhau (nút lá, nút có một con, nút có hai con) và đảm bảo tính cân bằng sau khi xóa. Tìm kiếm sinh viên cần thực hiện việc tìm kiếm một cách nhanh chóng và trả về kết quả chính xác.

3.3. Lựa Chọn Ngôn Ngữ Lập Trình và Thư Viện Phù Hợp

Ngôn ngữ lập trình và thư viện phù hợp có thể giúp đơn giản hóa quá trình triển khai và tối ưu hóa hiệu suất. Các ngôn ngữ như C++, Java, Python đều có thể được sử dụng để triển khai cây AVL. Để thực hiện việc tìm kiếm bằng cây AVL ta phải thiết kế một lớp cây AVL để lưu trữ các sinh viên.

IV. Ứng Dụng Cây AVL Tìm Kiếm Sinh Viên Theo Mã Tên 56 ký tự

Cây AVL có thể được ứng dụng để tìm kiếm sinh viên theo nhiều tiêu chí khác nhau, ví dụ: mã số, họ tên, lớp. Khả năng tìm kiếm nhanh chóng và chính xác của cây AVL giúp cải thiện đáng kể hiệu quả quản lý thông tin sinh viên. Liên kết cây AVL với danh sách sinh viên. Ứng dụng sử dụng cây AVL để thực hiện việc tìm kiếm sinh viên, tận dụng ưu điểm của cây AVL, khi thời gian tìm kiếm trung bình luôn nhanh hơn tìm kiếm tuyến tính thông thường. Để thực hiện việc tìm kiếm bằng cây AVL ta phải thiết kế một lớp cây AVL để lưu trữ các sinh viên.

4.1. Tìm Kiếm Sinh Viên Nhanh Chóng Theo Mã Số

Tìm kiếm sinh viên theo mã số là một trong những ứng dụng phổ biến nhất của cây AVL. Thời gian tìm kiếm nhanh chóng (O(log n)) giúp giảm thiểu thời gian chờ đợi của người dùng. Để đồng bộ dữ liệu khi cập nhật thông tin ta thông qua một hàm “Update” trong lớp cây AVL để đồng bộ dữ liệu khi thực hiện cập nhật thông tin. Tuy nhiên nó chỉ áp dụng cho cây AVL lưu trữ key là mã số. Bởi vì các node của cây chỉ lưu trữ một đối tượng duy nhất.

4.2. Tìm Kiếm Sinh Viên theo Tên Xử lý Trường Hợp Trùng Tên

Tìm kiếm sinh viên theo tên có thể phức tạp hơn do có thể có nhiều sinh viên trùng tên. Cây AVL có thể được cải tiến để xử lý trường hợp này bằng cách lưu trữ danh sách các sinh viên trùng tên trong cùng một nút của cây. Cây AVL có thể được cải tiến để xử lý trường hợp này bằng cách lưu trữ danh sách các sinh viên trùng tên trong cùng một nút của cây.

4.3. Ứng Dụng Cây AVL cho Các Chức Năng Quản Lý Khác

Ngoài tìm kiếm, cây AVL còn có thể được ứng dụng cho các chức năng quản lý khác như thống kê số lượng sinh viên theo lớp, tìm kiếm sinh viên có ngày sinh nhật trong tháng, v.v. Tuy nhiên phải tùy chỉnh phương thức tìm kiếm thông qua biến “loai” để trả về kết quả phù hợp với kiểu tìm kiếm mà người dùng lựa chọn. Nếu tìm kiếm theo tên phương thức trả về sinh viên chứa mã số đó.

V. Đánh Giá Hiệu Năng Cây AVL so với Phương Pháp Khác 57 ký tự

Để đánh giá hiệu quả của việc sử dụng cây AVL trong quản lý sinh viên, cần so sánh hiệu năng của nó với các phương pháp khác (ví dụ: duyệt danh sách, cây nhị phân tìm kiếm không cân bằng). Các tiêu chí đánh giá bao gồm thời gian tìm kiếm, thời gian thêm/xóa nút, và mức độ sử dụng bộ nhớ. Ứng dụng sử dụng cây AVL để thực hiện việc tìm kiếm sinh viên, tận dụng ưu điểm của cây AVL, khi thời gian tìm kiếm trung bình luôn nhanh hơn tìm kiếm tuyến tính thông thường. Cây AVL luôn có thời gian tối ưu

5.1. So Sánh Thời Gian Tìm Kiếm Cây AVL vs. Duyệt Danh Sách

Thời gian tìm kiếm là một trong những tiêu chí quan trọng nhất để đánh giá hiệu năng của cây AVL. So với duyệt danh sách (O(n)), cây AVL (O(log n)) vượt trội hơn hẳn khi số lượng sinh viên lớn. Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n).

5.2. Đánh Giá Thời Gian Thêm và Xóa Nút trong Cây AVL

Thời gian thêm và xóa nút cũng là những tiêu chí quan trọng. Cây AVL đảm bảo thời gian thêm/xóa nút luôn ở mức O(log n) nhờ khả năng tự cân bằng. Trong khi đó, với cây nhị phân thông thường thời gian thêm, xoá là O(n). Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n).

5.3. Mức Độ Sử Dụng Bộ Nhớ của Cây AVL Cân Nhắc và Tối Ưu

Cây AVL yêu cầu bộ nhớ để lưu trữ các nút và các thông tin liên quan. Cần cân nhắc mức độ sử dụng bộ nhớ để đảm bảo hệ thống hoạt động ổn định, đặc biệt khi số lượng sinh viên rất lớn. Cây đang ở trạng thái cân bằng, khi ta thêm (F) vào cây, cây mất cân bằng tại node (B). Ta thấy hệ số cân bằng của (B) là -2 (chiều cao con trái trừ chiều cao con phải) và (F) lại lớn hơn con trái của (B) là (D), suy ra cây lệch phải.

VI. Kết Luận Cây AVL Giải Pháp Tối Ưu Hướng Phát Triển 58 ký tự

Cây AVL là một giải pháp hiệu quả cho bài toán quản lý sinh viên, đặc biệt là trong việc tối ưu hóa thời gian tìm kiếm và đảm bảo tính toàn vẹn của dữ liệu. Trong tương lai, có thể nghiên cứu các phương pháp cải tiến cây AVL hoặc kết hợp nó với các kỹ thuật khác để nâng cao hiệu suất và khả năng mở rộng của hệ thống. Trong kỷ nguyên số, quản lý thông tin, đặc biệt là thông tin sinh viên, đặt ra nhiều thách thức cho các tổ chức giáo dục. Theo tài liệu gốc, “Hãy cùng nhau khám phá và hiểu rõ hơn về cách áp dụng cây AVL vào ứng dụng quản lý sinh viên, để có thể cải thiện khả năng quản lý dữ liệu trong lĩnh vực quản lý sinh viên và các ứng dụng khác trong hệ thống thông tin phức tạp.”

6.1. Tổng Kết Ưu Điểm của Cây AVL trong Quản Lý Sinh Viên

Cây AVL mang lại nhiều lợi ích cho hệ thống quản lý sinh viên, bao gồm thời gian tìm kiếm nhanh chóng, tính toàn vẹn dữ liệu cao, và khả năng mở rộng tốt. Các phương pháp quản lý truyền thống có thể trở nên chậm chạp và kém hiệu quả khi số lượng sinh viên tăng lên.

6.2. Hướng Nghiên Cứu và Phát Triển trong Tương Lai

Có thể nghiên cứu các phương pháp cải tiến cây AVL để giảm thiểu mức độ sử dụng bộ nhớ hoặc tăng tốc độ thêm/xóa nút. Đồng thời, có thể kết hợp cây AVL với các kỹ thuật khác như caching để nâng cao hiệu suất hệ thống. Thời gian tìm kiếm nhanh chóng (O(log n)) giúp giảm thiểu thời gian chờ đợi của người dùng.

6.3. Ứng Dụng Cây AVL trong Các Lĩnh Vực Quản Lý Dữ Liệu Khác

Các nguyên tắc và kỹ thuật được sử dụng trong quản lý sinh viên bằng cây AVL có thể được áp dụng cho các lĩnh vực quản lý dữ liệu khác, ví dụ: quản lý thư viện, quản lý kho hàng, quản lý khách hàng. Trong kỷ nguyên số, quản lý thông tin, đặc biệt là thông tin sinh viên, đặt ra nhiều thách thức cho các tổ chức giáo dục.

11/09/2025
Xây dựng ứng dụng quản lý sinh viên và tìm kiếm bằng cây avl

Trích đoạn nội dung tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ SÀI GÒN KHOA CÔNG NGHỆ THÔNG TIN  ĐỒ ÁN TIN HỌC XÂY DỰNG ỨNG DỤNG QUẢN LÝ SINH VIÊN VÀ TÌM KIẾM BẰNG CÂY AVL GVHD: Nguyễn Thanh Tùng SVTH: Châu Nguyễn Trường An Tp. Hồ Chí Minh, 12/2023 ĐỒ ÁN TIN HỌC 2 NGÀNH CÔNG NGHỆ THÔNG TIN  ĐỒ ÁN TIN HỌC GVHD: Nguyễn Thanh Tùng SVTH: Châu Nguyễn Trường An MSSV:DH52110526 - LỚP: D21_TH14 Tp. Hồ Chí Minh, 12/2023 3 Lời nói đầu Trong thời đại ngày nay, quản lý thông tin nói chung và quản lý thông tin sinh viên nói riêng là một công việc khó khăn đối với các tổ chức giáo dục và các doanh nghiệp liên quan. Để nâng cao hiệu suất trong việc tìm kiếm dữ liệu, ta sử dụng cây AVL để thực hiện điều này.

Là một cấu trúc dữ liệu tự cân bằng, cây AVL giúp giảm thời gian tìm kiếm và đồng thời đảm bảo rằng cơ sở dữ liệu duy trì sự ổn định. Đồ án này nhằm mục đích khám phá và phân tích ứng dụng của cây AVL trong việc quản lý thông tin sinh viên, đặc biệt là trong việc tối ưu hóa thời gian truy vấn và đảm bảo tính cân bằng của cơ sở dữ liệu. Chúng ta sẽ khám phá cách cây AVL giúp duy trì tính cân bằng và làm thế nào nó ảnh hưởng đến hiệu suất của các thao tác tìm kiếm và truy cập dữ liệu. Bên cạnh đó, chúng ta cũng sẽ xem xét những lợi ích chi tiết và ứng dụng thực tế của việc tích hợp cây AVL trong quản lý thông tin sinh viên.

Hãy cùng nhau khám phá và hiểu rõ hơn về cách áp dụng cây AVL vào ứng dụng quản lý sinh viên, để có thể cải thiện khả năng quản lý dữ liệu trong lĩnh vực quản lý sinh viên và các ứng dụng khác trong hệ thống thông tin phức tạp. Khái niệm cây AVL. Phép quay cây:. Phép quay trái:.

Phép quay phải:. Phép thêm và tính cân bằng của cây.8 Cây lệch phải:.9 Cây lệch trái:.10 Cây lệch trái phải-trái:.10 Cây lệch trái-phải:. Phép xóa trên cây.12 Lệch phải trái:.12 Lệch trái phải:.13 Thực hiện tương tự như trong cây nhị phân tìm kiếm:. Cơ sở dữ liệu.

Danh sách sinh viên. Cập nhật thông tin. Chức năng thêm. Chức năng cập nhật thông tin.

Chức năng tìm kiếm. Các chức năng khác. Liên kết cây AVL với danh sách sinh viên.29 Các thuộc tính của lớp node:.31 Phương thức thêm của cây AVL:.32 Phương thức tìm kiếm của cây:. Liên kết cây AVL vào danh sách sinh viên.38 6 MỤC LỤC HÌNH ẢNH Hình 1-1 thực hiện phép quay trái.7 Hình 1-2 thực hiện phép quay phải.8 Hình 1-3 thực hiện phép quay cây khi cây lệch phải.9 Hình 1-4 thực hiện phép quay cây khi cây lệch trái.10 Hình 1-5 thực hiện phép quay cây khi cây lệch phải-trái.10 Hình 1-6 thực hiện phép quay cây khi cây lệch trái-phải.11 Hình 1-7 thực hiện phép quay cây khi cây lệch trái sau khi xóa.12 Hình 1-8 thực hiện phép quay cây khi cây lệch phải sau khi xóa.12 Hình 1-9 thực hiện phép quay cây khi cây lệch phải-trái sau khi xóa.12 Hình 1-10 thực hiện phép quay cây khi cây lệch trái-phải sau khi xóa.13 Hình 3-1 giao diện chính của ứng dụng.16 Hình 3-2 giao diện của form thêm.17 Hình 3-3 giao diện của form xóa.18 Hình 3-4 giao diện của form cập nhật thông tin.19 Hình 3-5 cửa sổ tìm kiếm.19 Hình 3-6 cửa sổ tìm kiếm theo mã số.20 Hình 3-7 cửa sổ tìm kiếm theo lớp.20 Hình 3-8 cửa sổ tìm kiếm theo tên.21 Hình 3-9 quá trình lưu dữ liệu.21 Hình 3-10 thoát ứng dụng.22 Hình 4-1 cửa sổ các chức năng tìm kiếm.

Khái niệm cây AVL Khái niệm: cây AVL là cây tìm kiếm nhị phân có khả năng tự cân bằng, được nâng cấp và phát triển dựa trên cây nhị phân tìm kiếm (BST), là câu trúc dữ liệu đầu tiên có khả năng này. Trong cây AVL tại mỗi node chiều cao của 2 cây con không lệch quá 1. Do vậy khi thực hiện các phép toán thêm, xóa, tìm luôn chỉ tốn thời gian O (log n). Để cây cân bằng sau khi thực hiện việc thêm, xóa ta cần các phép toán cân bằng cây: quay trái, quay phải.

Để biết được node của cây có cân bằng hay chưa ta dùng hệ số cân bằng. Hệ số cân bằng của một node là hiệu chiều cao của cây con bên trái và cây con bên phải của node đó. Hệ số cân bằng = chiều cao con trái – chiều cao con phải a. Phép quay cây: Bao gồm 2 phép quay cây: quay trái, quay phải.

Phép quay cây giúp cây cân bằng sau khi thực hiện các phép thêm hoặc xóa. Phép quay cây chuyển một nút cha thành nút con, bảo toàn thứ tự giữ các node trên cây. Phép quay trái: HÌNH 1-1 THỰ HIỆN PHÉP QUAY TRÁI. Ta có node gốc là (z) và con phải là (y), phép quay trái chuyển node (y) thành node gốc và (z) thành con trái của (y).

Để giữ nguyên tính chất của cây nhị phân ta chuyển con trái của (y) trước khi quay (T2) thành con phải của (z). Sau đó ta gán con trái của (y) bằng (z), ta được như hình trên. Thực hiện phép quay trái trong C# 8 ii. Phép quay phải: HÌNH 1-2 THỰC HIỆN PHÉP QUAY PHẢI.

Ta có node gốc là (z) và con trái là (y), phép quay phải chuyển node (y) thành node gốc và (z) thành con phải của (y). Để giữ nguyên tính chất của cây nhị phân ta chuyển con phải của (y) trước khi quay (T3) thành con trái của (z). Sau đó ta gán con trái của (y) bằng (z), ta được như hình trên. Ta thực hiện phép quay trái trong C# b.

Phép thêm và tính cân bằng của cây Cây AVL là cây nhị phân tự cân bằng, để duy trì sự cân bằng của cây khi thêm, ta sử dụng các phép quay để cây cân bằng. 9 Cấu trúc của một node trong cây: Dữ liệu. Con trái và con phải. Chiều cao của node.

Thêm node mới vào cây: Đầu tiên ta thêm node mới vào cây như cây nhị phân thông thường, tuy nhiên việc này có thể làm cây mất cân bằng. Tiếp theo ta cập nhật chiều cao cho node mới thêm và di chuyển lên dần lên gốc cây để cập nhật chiều cao cho từng node. Kiểm tra xem node hiện tại có bị mất cân bằng hay không, nếu node bị mất cân bằng thực hiện phép quay để duy trì cân bằng của cây. Có 4 loại phép quay duy trì cân bằng: quay trái, quay phải, quay trái-phải, quay phải-trái.

Lặp lại các bước trên từ node mới thêm đến gốc cho đến khi cây cân bằng. Tính cân bằng của cây: Cây lệch phải: HÌNH 1-3 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI. Ta có cây đang ở trạng thái cân bằng, khi ta thêm (F) vào cây, cây mất cân bằng tại node (B). Ta thấy hệ số cân bằng của (B) là -2 (chiều cao con trái trừ chiều cao con phải) và (F) lại lớn hơn con trái của (B) là (D), suy ra cây lệch phải.

Để khôi phục trạng thái cân bằng ta thực hiện phép quay trái tại node (B). Ta được như hình. 10 Cây lệch trái: HÌNH 1-4 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI. Ta có cây đang ở trạng thái cân bằng, khi ta thêm (A) vào cây, cây mất cân bằng tại node (E).

Ta thấy hệ số cân bằng của (E) là 2 (chiều cao con trái trừ chiều cao con phải) và (A) lại bé hơn con phải của (E) là (C), suy ra cây lệch trái. Để khôi phục trạng thái cân bằng ta thực hiện phép quay phải tại node (E). Ta được như hình. Cây lệch trái phải-trái: HÌNH 1-5 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI-TRÁI.

Ta có cây đang ở trạng thái cân bằng, khi ta thêm (F) vào cây, cây mất cân bằng tại node (C). Ta thấy hệ số cân bằng của (C) là -2 (chiều cao con trái trừ chiều cao con phải) và (F) lại bé hơn con trái của (C) là (G), suy ra cây lệch phải-trái. Để khôi phục trạng thái cân bằng ta thực hiện phép quay kép, quay phải tại node (G) sau đó tiếp tục quay trái tại node (C). Ta được như hình.

11 Cây lệch trái-phải: HÌNH 1-6 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI-PHẢI. Ta có cây đang ở trạng thái cân bằng, khi ta thêm (E) vào cây, cây mất cân bằng tại node (F). Ta thấy hệ số cân bằng của (F) là 2 (chiều cao con trái trừ chiều cao con phải) và (E) lại lớn hơn con trái của (F) là (B), suy ra cây lệch trái-phải. Để khôi phục trạng thái cân bằng ta thực hiện phép quay kép, quay trái tại node (B) sau đó tiếp tục quay phải tại node (F).

Ta được như hình. Phép xóa trên cây Quá trình xóa một nút khỏi cây cũng có thể làm mất sự cân bằng của cây. Đầu tiên phép xóa trên cây AVL cũng tương tự trên cây nhị phân tìm kiếm (BST), cũng có 3 trường hợp: node lá, node có một con và node có 2 con. Node lá ta chỉ cần xóa trực tiếp node đó, node có một con ta chỉ cần lấy node con của node đó thế chỗ node cha.

Trường hợp node có 2 con, ta phải tìm node lớn nhất bên con trái hoặc nhỏ nhất bên con phải để làm node thế mạng. Ta gán dữ liệu node thế mạng vào node cần xóa và xóa node thế mạng ở cây con. Sau đó ta tiến hành cập nhật lại chiều cao cho các node cha từ node đã được xóa cho đến node gốc. Tiếp theo ta kiểm tra hệ số cân bằng của từng các node trên đường đi từ node cha đến node gốc.

Nếu cây mất cân bằng ta thực hiện phép quay để khôi phục cân bằng cho cây. Khi xóa cây sẽ bị một trong bốn trường hợp sau: 12 Lệch trái: HÌNH 1-7 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH TRÁI SAU KHI XÓA. Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (E). Cây bị mất cân bằng ở node (D), ta thấy hệ số cân bằng (D) là 2.

Ta thực hiện phép quay phải tại (D) để khôi phục sự cân bằng của của cây. Lệch phải: HÌNH 1-8 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI SAU KHI XÓA. Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (A). Cây bị mất cân bằng ở node (B), ta thấy hệ số cân bằng (B) là -2.

Ta thực hiện phép quay trái tại (B) để khôi phục sự cân bằng của của cây. Lệch phải trái: HÌNH 1-9 THỰC HIỆN PHÉP QUAY CÂY KHI CÂY LỆCH PHẢI-TRÁI SAU KHI XÓA. Cây đang ở trạng thái cân bằng, ta thực hiện xóa node (A). Cây bị mất cân bằng ở node (B), ta thấy hệ số cân bằng (B) là -2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ