Đồ án cơ sở chuyên ngành phần mềm: Quản lý sinh viên bằng cây nhị phân

51 2.1K 0
Đồ án cơ sở chuyên ngành phần mềm: Quản lý sinh viên bằng cây nhị phân

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN TÊN ĐỀ TAI ̀ Chuyên nganh: Công nghệ phần mềm ̀ ̀ ́ ̀ Ngay băt đâu: 10/4/2012 ̀ ́ ́ Ngay kêt thuc:10/5/2012 Giang viên hướng dân: THs. Nguyễn Tấn Thuận ̉ ̃ Sinh viên thực hiên: Nguyễn Minh Trung ̣ Mã sô: 162123079 ́ ̀ ̣ ̣ ́ Ngay nôp/ nhân xet: ̀ ̉ ̣ Ngay bao vê: 29/5/2012 Trang 2DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN NHÂN XET CUA GIANG VIÊN HƯỚNG DÂN ̣ ́ ̉ ̉ ̃ --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- LỜI MỞ ĐẦU Trang 3DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Trong thế giới hiện nay công nghệ thông tin ngày càng phát triển vượt bậc và ngày càng đạt được thành tựu to lớn trong việc phát triển kinh tế.Trên hầu hết tất cả lĩnh vực thì đều có mặt ngành công nghệ thông tin trong đó, nó đã trở thành một phần thiết yếu trong cuộc sống. Chương trình tin học ứng dụng ngày càng nhiều góp phần thay đổi cuộc sống,nâng cao khả năng chính xác và hoàn thành công việc nhanh chóng. Để có được những chương trình như vậy đòi hỏi người làm tin học phải biết phân tích thiết kế hệ thống, xây dựng một phần mềm quản lý ứng dụng đó. Và những phần mềm đó sẽ trở thành những công cụ hỗ trợ đắt lực nhằm đáp ứng những công việc quản lý nhờ những công cụ có sẵn. Chương trình quản lý sinh viên là một chương trình xây dựng nhằm đáp ứng những nhu cầu quản lý như ghi danh , tìm kiếm, lưu thông tin…và rất nhiều công việc một cách chính xác và nhanh chóng. Với đề tài này giúp chúng ta củng cố lại những kiến thức về cây nhị phân. Đồ án thực hiện dựa trên những kiến thức đã học và tìm kiếm trên internet. Do kiến thức và trình độ còn non kém nên em chưa hoàn thành đầy đủ các công tác quản lý.Trong quá trình thực hiện nếu có sai sót mong thầy cô thông cảm. CHƯƠNG I: Trang 4DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN CƠ SỞ LÝ THUYẾT 1.1. Lý thuyết đệ quy 1.1.1 Khái niệm: a. Đệ quy: Mặc dù lý thuyết đệ quy đã tồn tại rất lâu từ khi toán học ra đời và phát triển nhưng nó chỉ cho thấy tầm quan trọng và ứng dụng của mình khi con người phát minh ra máy vi tinh và tin học. Trong toán tin một đối tượng là đ ệ quy n ếu nó đ ược đ ịnh nghĩa qua chính nó hoặc một đối tượng khác cùng dạng bằng quy nạp. vd: Công thức truy hồi của dãy fibonacci.n∈N Nếu n=0 hoặc n=1 thì Fn=1, nếu n>1 thì Fn=Fn-1+Fn-2 b. Thuật toán đệ quy trong tin học: Thuật toán đệ quy là một thuật ngữ tin học chỉ các bước thực hiện giải bài toán, hoặc đối tượng nào đó bằng đệ quy.Một bài toán giải được thông qua cách xác định những trường hợp đặc biệt và tính quy nạp của nó được gọi là bài toán đ ệ quy. Nói cách khác giải một bài toán đệ quy là việc chia nhỏ lời giải thành những bài toán con “tầm thường” dễ giải hơn.Và thuật toán tương ứng với lời giải như vậy gọi là thuật toán đệ quy. c. Cấu trúc của thuật toán đệ quy: Định nghĩa một hàm đệ quy gồm hai phần: - Phần neo: Xác định những trường hợp đăc biệt của bài toán, đ ối tượng.Là phần thực hiện những công việc rất đơn giản, có thể giải trực tiếp mà không cần đến bài toán con nào cả. Phần này cũng quyết định tính hữu hạn của thuật toán. - Phần đệ quy: Để gọi đệ quy những bài toán con và phối hợp chúng lại nhằm tìm ra lời giải chính trong trường hợp chưa giải được bằng phần neo. vd: Trong công thức của dãy fibonacci phần neo là trường hợp n=0 và n=1,phần để gọi đệ quy chính là công thức Fn=Fn-1+Fn-2. Trang 5DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN d.Các loại đệ quy: Có 2 loại: Đệ quy trực tiếp và đệ quy gián tiếp - Đệ quy trực tiếp là loại đệ quy mà đối tượng được mô tả trực tiếp qua nó: A mô tả qua B, C,.. trong đó B, C, … không chứa A. - Đệ quy gián tiếp là loại đệ quy mà đối tượng được mô tả gián tiếp qua nó: A mô tả qua A1, A2, …, An. Trong đó có một Ai được mô tả qua A. 1.1.2. Ưu và nhược điểm của thuật toán đệ quy: Bên cạnh nhiều giải thuật khác như giải lặp, quy hoạch động, vét cạn...đệ quy vẫn là một công cụ rất hữu ích để xử lý các số liệu.Một ưu điểm quan trọng là không giới hạn số vòng lặp nên sẽ mở rộng được khả năng xử lý số liệu đ ầu vào.Ngoài ra, có nhiều đối tượng mà việc xây thuật toán đệ quy đơn giản hơn nhiều so với các các thuật toán khác như lặp. Mặc dù vậy một số bài toán hay đối tượng khi được lập trình trên máy tính bằng thuật toán đệ quy thì gây tốn bộ nhớ và thời gian thực hiện quá lâu đối với những số liệu lớn.Nguyên nhân cơ bản là vì bản chất của đệ quy thực chất là một dây chuyền mà trong đó các lệnh đệ quy khi thực hiện thì trình dịch phải chuyển các mã lệnh thành các thủ tục được xếp chồng lên nhau rồi mới xử lý chúng theo thứ tự. Nếu một thuật toán đệ quy đòi hỏi máy tính thực hiện số lượng lớn các thủ tục đặc biệt như các hàm mũ thị thời gian thực hiện và bộ nhớ tương đương cũng phải lớn. 1.2. Cấu trúc dữ liệu cây 1.2.1. Cây tổng quát: a. Khái niệm: A Cây là một cấu trúc lưu trữ trong đó các phân tử của cây (gọi là các nốt) có cùng kiểu dữ liệu. Mỗi nốt gồm dữ liệu B D D và các liên kiết đến nốt khác.Giữa các nốt D C D D C Trang 6DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN có quan hệ phân cấp gọi là “quan hệ cha con”. Trong cây có một nốt đ ặc biệt gọi là node gốc không là con của bất kỳ nốt nào. Cây có thể định nghĩa bằng đệ quy như sau: - Mỗi nốt là một cây, nó cũng là nốt gốc của cây đó. - Nếu n là một nốt và n1,n2,...nk lượt là nốt gốc của các cây T1,T2,...Tk .Và cho nốt n trở thành nốt cha của các nốt n1,n2,...nk thì ta sẽ được một cây mới T. Cây này có nốt gốc là n, các cây T1,T2,...Tk trở thành các cây con của nốt gốc n. - Cây không có nốt nào gọi là cây rỗng. b. Các khái niệm liên quan: Mức của cây: Người ta quy ước nốt gốc có mức 1, nếu nốt cha có mức i thì nốt con có mức i+1. Chiều cao của cây: Là mức cao nhất của các nốt trong cây. Bậc của nốt: là số nốt con của cây đó. Bậc của cây: là số bậc cao nhất của các nốt trong cây. Nốt lá: là nốt không có cây con (bậc bằng 0). Nốt nội (nốt trong): là nốtt trên cây có ít nhất một con. c. Các cách biểu diễn cây: Có 2 cách thông dụng để biểu diễn cấu trúc cây trên máy tính là bằng mảng hoặc bằng cấu trúc liên kết.Ở đây ta chỉ quan tâm tới biểu diễn bằng cấu trúc liên kết. A A B C E B D C Hình 2: bằng cấu trúc liên kết Hình 3: Bằng mảng Trang 7DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Khi biểu diễn bằng cấu trúc liên kết mỗi nốt trong cây là một trường gồm các ghi trong đó: -Trường data chứa dữ liệu lưu tại nút đó.Dữ liệu có thể là một giá trị đơn giản hoặc một cấu trúc dữ liệu phức tạp. - Trường liên kết chứa thông tin đến các cây con khác.Tuỳ vào loại cây mà s ố th ường liên kết có thể thay đổi. 2.2. Cây nhị phân: a.Khái niệm: Cây nhị phân là một trường hợp quan trọng của cấu trúc cây. Mọi nốt trên cây nhị phân đều có tối đa hai cây con có phân data biệt thứ tự là cây con trái và cây con phải.Cấu trúc như sau: - Trường data : chứa dữ liệu - Trường left : chứa liên kết tới nốt con trái.Trường hợp left right không có con trái trường này được gán 1 giá trị đặc biệt (trong ngôn ngữ C là NULL). - Trường right : chứa liên kết tới nốt con phải.Trường hợp không có con ph ải tr ường này được gán 1 giá trị đặc biệt (trong ngôn ngữ C là NULL). b. Các dạng đặc biệt của cây nhị phân: Hình 4: Một nốt của cây nhi phân Cây nhị phân suy biến: các nốt không phải là lá chỉ có một nhánh con. Các trường hợp của cây nhị phân suy biến : 1 4 4 2 3 6 3 2 5 Trang 8DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Hình 5: Cây lệch trái Hình 6: Cây lệch phải Hình 7:Cây zích zắc Cây nhị phân hoàn chỉnh: Các mức nhỏ hơn h-1 đều có 2 con (với h là chiều cao của cây). Cây cân bằng: Là cây nhị phân thoả mãn điều kiện với mọi nốt của cây thì chiều cao con trái và chiều cao con phải hơn kém nhau không quá 1. 2.3. Cây nhị phân tìm kiếm (BST): a.Định nghĩa: Cây nhị phân tìm kiếm là cây nhị phân có giá trị khoá tìm kiếm (key) tại mỗi nốt đều lớn hơn giá trị key của mọi nốt thuộc cây con trái và nhỏ hơn giá trị key của mọi nốt thuộc cây con phải. b. Các tính chất: - Với cây thông thường để tìm 1 giá trị trong cây có n nốt thì đ ộ ph ức t ạp s ẽ là O(n). Còn đối với cây BST thì số lần tìm kiếm tối đa bằng chiều cao của cây tương đương với độ phức tạp O(log2n) rất thuận tiện cho thao tác tìm kiếm. - Cây BST khi duyệt trung tự thì các giá trị được sắp xếp tăng dần. - Giá trị nhỏ nhất trong cây nằm ở bên trái nhất, giá trị lớn nhất nằm phía bên ph ải nhất của cây. 3.Thuật toán và sơ đồ khối: Cây Nhị phân tìm kiếm (BST): 3.1. Tạo cây BST: -Hàm chèn một giá tri vào cây BST: Sơ đồ khối: Trang 9DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN begi n T=NUL S L Đ T=new SinhVien T->info=x T->left=T->right=null S T- >info>x Đ T=T->left S S T- >rightright end Thuật toán: B1: Nếu cây rỗng. B1.1: Tạo nốt mới. B1.2: Gán cây bằng nốt vừa tạo. Trang 10DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN B2: Ngược lại nếu giá trị chèn nhỏ hơn giá trị của cây thì chèn vào bên trái của cây. B3: Ngược lại nếu giá trị chèn lớn hơn giá trị của cây thì chèn vào bên phải của cây. B4: trùng giá trị đã có thì báo đã có trong cây. Ví dụ : Chèn giá trị 5 vào cây BST sau : 54 chèn bên phải 8 5left T=T->right S T==nul l Đ end Thuật toán: B1: Trong khi cây khác rỗng: Trang 13DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN B1.1: xuất ra giá trị của cây. B1.2: gọi hàm đệ quy duyệt cây con trái. B1.3: gọi hàm đệ quy duyệt cây con phải. 3.2.2 Duyệt trung tự: Sơ đồ khối: begin S T!=null Đ T=T->left T->info T=T->right S T==nul l Đ end Trang 14DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Thuật toán: B1: Trong khi cây khác rỗng: B1.1: gọi hàm đệ quy duyệt cây con trái. B1.2: xuất ra giá trị của cây. B1.3: gọi hàm đệ quy duyệt cây con phải. 3.2.2 Duyệt hậu tự: Sơ đồ khối: begin S T!=null Đ T=T->left T=T->right T->info S T==nul l Đ end Trang 15DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Thuật toán: B1: Trong khi cây khác rỗng: B1.1: gọi hàm đệ quy duyệt cây con trái. B1.2: gọi hàm đệ quy duyệt cây con phải. B1.3: xuất ra giá trị của cây. Ví dụ minh hoạ thuật toán: Cây T: 10 20 50 30 40 NULL 60 NULL NULL NULL NULL NULL NULL Hình 12:Ví dụ về duyệt cây Duyệt tiền tự : 1. Gọi hàm duyệt tiền tự cây T. 2. Xuất số 10 ra màn hình. 3. Gọi hàm duyệt tiền tự quy T->left đến nốt 20 (hàm con đệ quy của nốt 10). 4. Xuất số 20 ra màn hình. 5. Gọi hàm duyệt tiền tự T->left đến nốt 30 (hàm con đệ quy của nốt 20). 6. Xuất số 30 ra màn hình. 7. Gọi hàm duyệt tiền tự T->left đến NULL. 8. Gọi hàm duyệt tiền tự T->right đến NULL. 9. Gọi hàm duyệt tiền tự T->right đến nốt 40 (hàm con đệ quy của nốt 20). 10. Xuất 40 ra màn hình. 11. Gọi duyệt tiền tự T->left đến NULL. 12. Gọi hàm duyệt tiền tự T->right đến NULL. Trang 16DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN 13. Gọi hàm duyệt t

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN SỞ CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM TÊN ĐỀ TÀI QUẢN SINH VIÊN BẰNG CÂY NHỊ PHÂN Giáo viên hưỡng dẫn: Ths. NGUYỄN TẤN THUẬN Người thực hiện: NGUYỄN MINH TRUNG Mã số SV: 162123079 Đà Nẵng,4/2012 ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN TÊN ĐỀ TÀI Chuyên ngành: Công nghệ phần mềm Ngày bắt đầu: 10/4/2012 Ngày kết thúc:10/5/2012 Giảng viên hướng dẫn: THs. Nguyễn Tấn Thuận Sinh viên thực hiện: Nguyễn Minh Trung Mã số: 162123079 Ngày nộp/ nhận xét: Ngày bảo vệ: 29/5/2012 Trang 2 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN LỜI MỞ ĐẦU Trang 3 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Trong thế giới hiện nay công nghệ thông tin ngày càng phát triển vượt bậc và ngày càng đạt được thành tựu to lớn trong việc phát triển kinh tế.Trên hầu hết tất cả lĩnh vực thì đều mặt ngành công nghệ thông tin trong đó, nó đã trở thành một phần thiết yếu trong cuộc sống. Chương trình tin học ứng dụng ngày càng nhiều góp phần thay đổi cuộc sống,nâng cao khả năng chính xác và hoàn thành công việc nhanh chóng. Để được những chương trình như vậy đòi hỏi người làm tin học phải biết phân tích thiết kế hệ thống, xây dựng một phần mềm quản ứng dụng đó. Và những phần mềm đó sẽ trở thành những công cụ hỗ trợ đắt lực nhằm đáp ứng những công việc quản nhờ những công cụ sẵn. Chương trình quản sinh viên là một chương trình xây dựng nhằm đáp ứng những nhu cầu quản như ghi danh , tìm kiếm, lưu thông tin…và rất nhiều công việc một cách chính xác và nhanh chóng. Với đề tài này giúp chúng ta củng cố lại những kiến thức về cây nhị phân. Đồ án thực hiện dựa trên những kiến thức đã học và tìm kiếm trên internet. Do kiến thức và trình độ còn non kém nên em chưa hoàn thành đầy đủ các công tác quản lý.Trong quá trình thực hiện nếu sai sót mong thầy thông cảm. CHƯƠNG I: Trang 4 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN SỞ THUYẾT 1.1. thuyết đệ quy 1.1.1 Khái niệm: a. Đệ quy: Mặc dù thuyết đệ quy đã tồn tại rất lâu từ khi toán học ra đời và phát triển nhưng nó chỉ cho thấy tầm quan trọng và ứng dụng của mình khi con người phát minh ra máy vi tinh và tin học. Trong toán tin một đối tượng là đệ quy nếu nó được định nghĩa qua chính nó hoặc một đối tượng khác cùng dạng bằng quy nạp. vd: Công thức truy hồi của dãy fibonacci.n∈N Nếu n=0 hoặc n=1 thì F n =1, nếu n>1 thì F n =F n-1 +F n-2 b. Thuật toán đệ quy trong tin học: Thuật toán đệ quy là một thuật ngữ tin học chỉ các bước thực hiện giải bài toán, hoặc đối tượng nào đó bằng đệ quy.Một bài toán giải được thông qua cách xác định những trường hợp đặc biệt và tính quy nạp của nó được gọi là bài toán đệ quy. Nói cách khác giải một bài toán đệ quy là việc chia nhỏ lời giải thành những bài toán con “tầm thường” dễ giải hơn.Và thuật toán tương ứng với lời giải như vậy gọi là thuật toán đệ quy. c. Cấu trúc của thuật toán đệ quy: Định nghĩa một hàm đệ quy gồm hai phần: - Phần neo: Xác định những trường hợp đăc biệt của bài toán, đối tượng.Là phần thực hiện những công việc rất đơn giản, thể giải trực tiếp mà không cần đến bài toán con nào cả. Phần này cũng quyết định tính hữu hạn của thuật toán. - Phần đệ quy: Để gọi đệ quy những bài toán con và phối hợp chúng lại nhằm tìm ra lời giải chính trong trường hợp chưa giải được bằng phần neo. vd: Trong công thức của dãy fibonacci phần neo là trường hợp n=0 và n=1,phần để gọi đệ quy chính là công thức F n =F n-1 +F n-2 . Trang 5 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN d.Các loại đệ quy: 2 loại: Đệ quy trực tiếp và đệ quy gián tiếp - Đệ quy trực tiếp là loại đệ quy mà đối tượng được mô tả trực tiếp qua nó: A mô tả qua B, C, trong đó B, C, … không chứa A. - Đệ quy gián tiếp là loại đệ quy mà đối tượng được mô tả gián tiếp qua nó: A mô tả qua A 1 , A 2 , …, A n . Trong đó một A i được mô tả qua A. 1.1.2. Ưu và nhược điểm của thuật toán đệ quy: Bên cạnh nhiều giải thuật khác như giải lặp, quy hoạch động, vét cạn đệ quy vẫn là một công cụ rất hữu ích để xử các số liệu.Một ưu điểm quan trọng là không giới hạn số vòng lặp nên sẽ mở rộng được khả năng xử số liệu đầu vào.Ngoài ra, nhiều đối tượng mà việc xây thuật toán đệ quy đơn giản hơn nhiều so với các các thuật toán khác như lặp. Mặc dù vậy một số bài toán hay đối tượng khi được lập trình trên máy tính bằng thuật toán đệ quy thì gây tốn bộ nhớ và thời gian thực hiện quá lâu đối với những số liệu lớn.Nguyên nhân bản là vì bản chất của đệ quy thực chất là một dây chuyền mà trong đó các lệnh đệ quy khi thực hiện thì trình dịch phải chuyển các mã lệnh thành các thủ tục được xếp chồng lên nhau rồi mới xử chúng theo thứ tự. Nếu một thuật toán đệ quy đòi hỏi máy tính thực hiện số lượng lớn các thủ tục đặc biệt như các hàm mũ thị thời gian thực hiện và bộ nhớ tương đương cũng phải lớn. 1.2. Cấu trúc dữ liệu cây 1.2.1. Cây tổng quát: a. Khái niệm: Cây là một cấu trúc lưu trữ trong đó các phân tử của cây (gọi là các nốt) cùng kiểu dữ liệu. Mỗi nốt gồm dữ liệu và các liên kiết đến nốt khác.Giữa các nốt Trang 6 A B C D D D C D D DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN quan hệ phân cấp gọi là “quan hệ cha con”. Trong cây một nốt đặc biệt gọi là node gốc không là con của bất kỳ nốt nào. Cây thể định nghĩa bằng đệ quy như sau: - Mỗi nốt là một cây, nó cũng là nốt gốc của cây đó. - Nếu n là một nốt và n 1 ,n 2 , n k lượt là nốt gốc của các cây T 1 ,T 2 , T k .Và cho nốt n trở thành nốt cha của các nốt n 1 ,n 2 , n k thì ta sẽ được một cây mới T. Cây này nốt gốc là n, các cây T 1 ,T 2 , T k trở thành các cây con của nốt gốc n. - Cây không nốt nào gọi là cây rỗng. b. Các khái niệm liên quan: Mức của cây: Người ta quy ước nốt gốc mức 1, nếu nốt cha mức i thì nốt con mức i+1. Chiều cao của cây: Là mức cao nhất của các nốt trong cây. Bậc của nốt: là số nốt con của cây đó. Bậc của cây: là số bậc cao nhất của các nốt trong cây. Nốt lá: là nốt không cây con (bậc bằng 0). Nốt nội (nốt trong): là nốtt trên cây ít nhất một con. c. Các cách biểu diễn cây: 2 cách thông dụng để biểu diễn cấu trúc cây trên máy tính là bằng mảng hoặc bằng cấu trúc liên kết.Ở đây ta chỉ quan tâm tới biểu diễn bằng cấu trúc liên kết. Hình 2: bằng cấu trúc liên kết Hình 3: Bằng mảng Trang 7 A B C E A B D C DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Khi biểu diễn bằng cấu trúc liên kết mỗi nốt trong cây là một trường gồm các ghi trong đó: -Trường data chứa dữ liệu lưu tại nút đó.Dữ liệu thể là một giá trị đơn giản hoặc một cấu trúc dữ liệu phức tạp. - Trường liên kết chứa thông tin đến các cây con khác.Tuỳ vào loại câysố thường liên kết thể thay đổi. 2.2. Cây nhị phân: a.Khái niệm: Cây nhị phân là một trường hợp quan trọng của cấu trúc cây. Mọi nốt trên cây nhị phân đều tối đa hai cây con phân biệt thứ tự là cây con trái và cây con phải.Cấu trúc như sau: - Trường data : chứa dữ liệu - Trường left : chứa liên kết tới nốt con trái.Trường hợp không con trái trường này được gán 1 giá trị đặc biệt (trong ngôn ngữ C là NULL). - Trường right : chứa liên kết tới nốt con phải.Trường hợp không con phải trường này được gán 1 giá trị đặc biệt (trong ngôn ngữ C là NULL). b. Các dạng đặc biệt của cây nhị phân: Hình 4: Một nốt của cây nhi phân Cây nhị phân suy biến: các nốt không phải là lá chỉ một nhánh con. Các trường hợp của cây nhị phân suy biến : Trang 8 left right 1 2 3 4 3 2 4 6 5 data DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Hình 5: Cây lệch trái Hình 6: Cây lệch phải Hình 7:Cây zích zắc Cây nhị phân hoàn chỉnh: Các mức nhỏ hơn h-1 đều 2 con (với h là chiều cao của cây). Cây cân bằng: Là cây nhị phân thoả mãn điều kiện với mọi nốt của cây thì chiều cao con trái và chiều cao con phải hơn kém nhau không quá 1. 2.3. Cây nhị phân tìm kiếm (BST): a.Định nghĩa: Cây nhị phân tìm kiếm là cây nhị phân giá trị khoá tìm kiếm (key) tại mỗi nốt đều lớn hơn giá trị key của mọi nốt thuộc cây con trái và nhỏ hơn giá trị key của mọi nốt thuộc cây con phải. b. Các tính chất: - Với cây thông thường để tìm 1 giá trị trong cây n nốt thì độ phức tạp sẽ là O(n). Còn đối với cây BST thì số lần tìm kiếm tối đa bằng chiều cao của cây tương đương với độ phức tạp O(log 2 n) rất thuận tiện cho thao tác tìm kiếm. - Cây BST khi duyệt trung tự thì các giá trị được sắp xếp tăng dần. - Giá trị nhỏ nhất trong cây nằm ở bên trái nhất, giá trị lớn nhất nằm phía bên phải nhất của cây. 3.Thuật toán và đồ khối: Cây Nhị phân tìm kiếm (BST): 3.1. Tạo cây BST: -Hàm chèn một giá tri vào cây BST: đồ khối: Trang 9 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN S Đ S Đ S S Đ Thuật toán: B1: Nếu cây rỗng. B1.1: Tạo nốt mới. B1.2: Gán cây bằng nốt vừa tạo. B2: Ngược lại nếu giá trị chèn nhỏ hơn giá trị của cây thì chèn vào bên trái của cây. Trang 10 end begi n T=NUL L T=new SinhVien T->info=x T->left=T->right=null T- >info>x T=T->left T- >right<x T=T->right DTU [...]... khía cạnh tin học đề tài sẽ sử dụng cây nhị phân- một trường hợp đặc biệt của cây làm mục tiêu nghiên cứu Cây nhị phân BST là một trong những cấu trúc dữ liệu bản và rất quan trọng trong lập trình.Ở đây ta sẽ tạo một hệ thống quản sinh viên bằng cây nhị phân BST gồm những thao tác bản trên cây nhị phân bằng thuật toán đệ quy như tạo,duyệt cây nhị phâncây nhị phân tìm kiếm, một số thao tác đếm,... liệu từ file, thêm sinh viên vào danh sách, tìm sinh viên, liệt kê các sinh viên , xóa sinh viên, lưu dữ liệu vào file 3 KHAI BÁO CẤU TRÚC DỮ LIỆU QUẢN SINH VIÊN 3.1 .Cây nhị phân là một kiểu dữ liệu tự định ngĩa: Đệ tạo ra môt cấu trúc cây nhị phân quản sinh viên gồm các trường: mã số,họ tên,giới tính,năm sinh, lớp,địa chỉ trên máy tính , với ngôn ngữ C ta định nghĩa cây nhị phân là một kiểu dữ... cầu bài toán Mục đích đề tài: Xây dựng và tạo được chương trình quản sinh viên bằng cây nhị phân BST Trang 27 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Nội dung đề tài: - Chương trình tạo ra thể thực hiện đầy đủ các công việc của người quản sinh viên: Nhập, xóa, thêm, tìm kiếm,sắp xếp - Mỗi sinh viên phải đảm bảo đầy đủ các thông tin: mã số sinh viên, tên sinh viên, ngày/tháng/năm sinh, giới... của cây T=1+ số nốt cây con trái 20 + số nốt cây con phải 50 2 Số nốt cây 20 = 1+ số nốt cây con trái 30 + số nốt con phải 40 3 Số nốt cây 30 = 1 + 0 (cây rỗng ) + 0 (cây rỗng) 4 Số nốt cây 30=1 5 Số nốt cây 40 = 1 + 0 (cây rỗng ) + 0 (cây rỗng) 6 Số nốt cây 40=1 7 Số nốt cây 20=3 8 Số nốt cây 50 = 1+ 0 (cây rỗng) + số nốt con phải 60 9 Số nốt cây 60 = 1 + 0 (cây rỗng ) + 0 (cây rỗng) 10 Số nốt cây. .. Thêm sinh viên In danh sách Tìm sinh viên theo mã số Sửa thông tin sinh viên Xóa sinh viên Đếm số sinh viên Lưu chương trình Thoát chương trình Chương trình sẽ thực hiện các thao tác và mộ số bài toán bản trên cây nhị phân trường dữ liệu là các số nguyên và ký tự đồ hệ thống chương trình (đươc minh hoạ ở hình 8 ) gồm menu chính hiển thị đường dẫn đến các menu tác vụ nhỏ hơn: -Menu nhập sinh viên: ... toán: B1: Nếu cây rỗng B1.1: Tạo nốt mới B1.2: Gán cây bằng nốt vừa tạo B2: Ngược lại nếu mã số của sinh viên cần chèn nhỏ hơn mã số của sinh viên trong cây thì chèn vào bên trái của cây B3: Ngược lại nếu mã số của sinh viên cần chèn lớn hơn mã số của sinh viên trong cây thì chèn vào bên phải của cây Trang 33 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN B4: trùng giá trị đã thì báo đã trong cây. .. Cuối cùng là ứng dụng các thuật toán đệ quy để cài đặt một số bài toán trên cây nhị phân, chương trình được viết bằng ngôn ngữ C Chương trình được thực hiện trên ngôn ngữ lập trình C++, chương trình sẽ bao gồm các thao tác thực hiện trên cây nhị phân Với các thuật toán ứng dụng sẽ thể hiện rõ được các thuộc tính cũng như đặt trưng trên cây vào bài toán quản sinh viên Chương trình được thiết kế ở... THÔNG TIN Thuật toán: (giá trị xóa được xác định dựa vào mã số sinh viên) B1: Nếu cây rỗng báo không xoá được B2: Ngược lại (tìm được giá trị cần xoá): B2.1: Nếu cây là lá thì xoá cây B2.2: Nếu cây chỉ con trái thì gán cây =con trái B2.3: Nếu cây chỉ con phải thì gán cây =con phải B2.4: Trường hợp cây 2 con thực hiện 1 trong 2 cách: - Tìm giá trị lớn nhất bên con trái thay vào cây sau đó xoá... giá trị của cây vào mảng B1.4: gọi hàm đệ quy cho cây con phải Ví dụ: Cây nhị phân T Hình 32: Sao chép sang mảng Kết quả lưu trên mảng: Hình 33: Cây mảng cây T + Hàm kiểm tra cây BST: Đầu vào: Cây nhị phân T Đầu ra: Trả về 1 (nếu là cây BST) hoặc 0 (không phải cây BST) Thuật toán: B1: Khai báo mảng a kích thước ban đầu n=0 B2: Gọi hàm chuyển sang mảng cây T B3: Lặp i từ 1 đến n Nếu a[i] >a[i+1] trả về... Thuật toán: B1: Nếu cây rỗng trả về trả về 0 B2: Ngược lại thì trả về giá trị của cây cộng với tổng cây con phải cộng với tổng cây con trái Ví dụ : Tính tổng cây T Trang 24 DTU ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Hình 29: Tính tổng các nốt Kết quả: Tổng các nốt cây T bằng 210 3.8.Tìm chiều cao của cây: Để tính chiều cao của cây ta phải tính chiều cao của các cây con, khi đó chiều cao của cây bằng . của cây nhị phân: Hình 4: Một nốt của cây nhi phân Cây nhị phân suy biến: các nốt không phải là lá chỉ có một nhánh con. Các trường hợp của cây nhị phân suy biến : Trang 8 left right 1 2 3 4 3 2 4 6 5 data DTU ĐẠI. của thuật toán đệ quy: Bên cạnh nhi u giải thuật khác như giải lặp, quy hoạch động, vét cạn đệ quy vẫn là một công cụ rất hữu ích để xử lý các số liệu.Một ưu điểm quan trọng là không giới hạn. lặp nên sẽ mở rộng được khả năng xử lý số liệu đầu vào.Ngoài ra, có nhi u đối tượng mà việc xây thuật toán đệ quy đơn giản hơn nhi u so với các các thuật toán khác như lặp. Mặc dù vậy một số bài

Ngày đăng: 23/04/2014, 20:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan