TRƯỜNG ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CƠ SỞ
CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM
TÊN ĐỀ TÀI
QUẢN LÝ 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 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 4
DTU
ĐẠ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ì 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, 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 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: 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 A
1
, A
2
, …, A
n
. Trong đó có 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ử 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:
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 và
các liên kiết đến nốt khác.Giữa các nốt có
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 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à 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 có 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 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.
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 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
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 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 :
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 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(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à 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 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
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
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 :
Hình 38: Chèn BST.
- Khi gọi hàm chèn vì 5 <8 nên hàm gọi đệ quy chèn bên trái của cây 8.
- Tương tự 5>4 nên hàm tiếp tục gọi đệ quy chèn bên phải cây 4.
- 5<6 chèn bên trái cây 6.
Hình 39: Chèn BST.
Trang 11
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
-Vì con trái của 6 rỗng nên hàm tạo nốt mới có giá trị bằng 5 và gán vào con trái của 6.
- Kết thúc.
-Hàm tạo cây BST:
Đầu vào: Cây T rỗng.
Đầu ra: Cây BST không chứa giá trị 0.
Thuât toán:
B1: Khai báo biến nhập.
B2: Tạo một cây rỗng.
B3: Lặp cho tới khi biến nhập = 0.
B3.1: Nhâp giá trị chèn.
B3.2: Gọi hàm chèn.
3.2. Các phép duyệt :
Đầu vào: Cây nhị phân lưu các số nguyên.
Kết quả: xuất ra màn hình 1 dãy các giá trị của cây cần duyệt.
3.2.1 Duyệt tiền tự:
Sơ đồ khôi:
Trang 12
begin
end
T!=null
T=T->left
T->info
T=T->right
T==nul
l
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
S
Đ
S
Đ
Thuật toán:
B1: Trong khi cây khác rỗng:
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ự:
Trang 13
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Sơ đồ khối:
S
Đ
S
Đ
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:
Trang 14
begin
end
T!=null
T=T->left
T->info
T=T->right
T==nul
l
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
S
Đ
S
Đ
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:
Trang 15
begin
end
T!=null
T=T->left
T->info
T=T->right
T==nul
l
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
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.
13.Gọi hàm duyệt tiền tự T->right đến 50 (hàm con của nốt 10).
14.Xuất 50 ra màn hình.
15.Gọi hàm duyệt tiền tự T->left đến NULL.
16.Gọi hàm duyệt tiền tự T->right đến 60 (hàm con của nốt 50).
17.Xuất 60 ra màn hình.
18.Gọi hàm duyệt tiền tự T->left đến NULL.
19.Gọi hàm duyệt tiền tự T->right đến NULL.
Trang 16
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
20.Kết thúc.
Vây kết quả sau khi duyệt tiền tự cây T sẽ là:10 20 30 40 50 60
Tương tự ta với hàm duyệt trung tự kết quả là: 30 20 40 10 50 60
Duyệt hậu tự : 30 40 20 60 50 10
3.3. Các thao tác đếm :
Đầu vào: Cây nhị phân lưu các số nguyên
Đầu ra: Trả về số lượng các nốt tương ứng (tất cả, số nốt lá,nốt nội )tuỳ vào các hàm
dưới đây.
3.3.1. Đếm tất cả các nốt trên cây:
Để tính số nốt của cây ta cần tính số nốt của cây con trái và phải.Khi đó tổng nốt
sẽ bằng tổng nốt của các cây con cộng thêm 1.
Sơ đồ khối:
Đ
S
S
Đ
S
Đ
Trang 17
begin
end
T!
=null
T->left!
=null
T=T->left
T->right!
=null
T=T->right
d=1
d++
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Thuật toán :
B1: Nếu cây rỗng trả về 0.
B2: Ngược lại trả về 1 cộng với hàm đếm nốt cây con trái cộng tiếp với hàm đếm
số nốt cây con phải.
Ví dụ minh hoạ thuật toán : Đếm số nốt của cây T.
Hình 13: Đếm tất cả các nốt.
1. Số nốt 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 60 =1.
11. Số nốt cây 50 =2.
12. Số nốt cây T(cây 10)=6.
13. Kết thúc.
Trang 18
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Vậy kết quả hàm trả về là bằng 6.
3.4. Xoá 1 nốt của cây BST.
Sơ đồ khối:
Đ
S S
Đ Đ
S Đ
S
Đ
S
Đ
Trang 19
end
begin
T!=Null
T-
>info=x
T-
>left=null
T-
>right=null
Tree *p=T
Free(p)
T=null
Tree *p=T->left
Tree *q=T
q=p
p=p->right
p->right!
=Null
T->info=p->info
T=p
x=p->info
T-
>info<x
T=T->left T=T->right
T->left!
=nu
ll
Tree *p=T
T=T->right
Free(p)
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ 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ỉ có con trái thì gán cây =con trái.
B2.3: Nếu cây chỉ có con phải thì gán cây =con phải.
B2.4: Trường hợp cây có 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ị
lớn nhất bên con trái cây vừa thay.
- Hoặc tìm giá trị nhỏ nhất bên con phải thay vào cây sau đó xoá
giá trị nhỏ nhất bên con phải cây vừa thay.
B3: Ngược lại nếu giá trị xoá > hơn giá trị của cây thì chuyển sang xoá bên phải
của cây.
B4: Ngược lại nếu giá trị xoá < hơn giá trị của cây thì chuyển sang xoá bên trái
của cây.
Ví dụ: Xoá nốt 10 trên cây nhị phân sau :
Hình 40: Xoá nốt cây BST.
- 10 >5, chuyển sang xoá bên phải cây.
Trang 20
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Hình 41: Xoá nốt cây BST.
- Tìm được nốt 10 trong cây.
- 10 có 2 cây con.
- Tìm giá trị nhỏ nhất bên con trái của cây 10.
- 9 là giá trị lớn nhất bên con trái.
- Gán nốt 10= 9.
Hình 42: Xoá nốt cây BST.
- Tìm xoá nốt 9.
- Kết quả sau khi xoá như hình trên.
3.5.Kiểm tra cây có phải cây BST không:
Dùng mảng một chiều lưu các giá trị của cây khi duyệt trung tự , nếu mảng được được
lưu theo thứ tự tăng dần thì cây vừa được xử lý là BST.
-Hàm sao chép các giá trị của cây sang mảng mộ chiều::
Trang 21
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Đầu vào: Cây nhị phân T lưu số nguyên, mảng một chiều a, một biến n lưu kích thước
mảng (ban đầu bằng 0).
Đầu ra: Mảng a (lưu các giá trị của cây ) có kích thước n (bằng số nốt trên cây).
B1: Trong khi cây khác rỗng:
B1.1: gọi hàm đệ quy cho cây con trái.
B1.2: Tăng kích thước mảng lên 1.
B1.3: Gán 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ề không.
Trang 22
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
B4: Trả về 1
3.6.Kiểm tra nốt gốc có lớn hơn mọi nốt trong cây hay không:
Đầu vào: Cây nhị phân lưu các số nguyên không có 2 nốt cùng giá trị.
Đầu ra: Trả về 0(nếu cây rỗng hoặc nốt gốc không lớn nhất) hoặc 1 nếu nốt gốc là lớn
nhất.
Muốn kiểm tra xem nốt gốc của cây có lớn hơn mọi nốt trong cây hay không ta phải xây
dựng hàm tìm giá trị lớn nhất trong cây và hàm so sánh giả trị này với nốt gốc của cây.
Thuât toán:
-Hàm tìm giá trị lớn nhất trong cây:
B1: Nếu cây rỗng trả về 0.
B2: Ngược lại nếu cây là không có cây con nào thì trả về giá trị của cây.
B3: Ngược lại khai báo m = giá trị của cây.
B3.1: Nếu con trái khác rỗng khai báo mleft = giá trị lớn nhất của con
trái.Nếu mleft >m thì m=mleft.
B3.1: Nếu con phải khác rỗng khai báo mright =giá trị lớn nhất của con
phải. Nếu mleft >m thì m=mright.
B4: Trả về m.
Ví dụ minh hoạ: Tìm giá trị lớn nhất của cây T.
Trang 23
DTU
ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN
Ghi chú: m là giá trị lớn nhất như trong thuật toán.
Hình 31: Tìm giá trị lớn nhất.
Kết quả cuối cùng trả về m=60.
-Hàm kiểm tra nốt gốc có lớn nhất không:
B1: Nếu cây rỗng trả về 0.
B2: Ngược lại nếu nốt gốc lớn hơn hoặc bằng giá trị lớn nhất của cây thì trả về 1
B3: Còn lại trả về 0.
3.7.Tính tổng các giá trị của cây:
Để tính tổng nốt của cây ta phải tính tổng nốt của các cây con ,khi đó tổng nốt của cây
bằng giá trị của cây cộng với tổng nốt các cây con.
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 chiều cao lớn nhất của các cây con cộng thêm 1.
Thuật toán :
B1: Nếu cây rỗng thì chiều cao bằng 0.
B2: Ngược lại:
B2.1: Khai báo h1=chiều cao cây con trái.
B2.2: Khai báo h2=chiều cao cây con phải.
B2.3: Nếu h1>h2 thì trả về h1+1.
B2.4: Ngược lại trả về h2+1.
Ví dụ :Tìm chiều cao của cây T.
Trang 25
DTU