Tải bản đầy đủ (.ppt) (18 trang)

Cây tìm kiếm nhị phân

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (218.56 KB, 18 trang )



TRƯỜNG ĐHSP HÀ NỘI
LỚP CHK15 – KHOA CNTT
BÀI GIẢNG MÔN
CẤU TRÚC DỮ LIỆU
CÂY TÌM KIẾM NHỊ PHÂN
KHÁI NIỆM
TÌM KIẾM
THÊM
XOÁ
GIẢNG VIÊN HƯỚNG DẪN
PGS.TS LÊ KHẮC THÀNH
HỌC VIÊN THỰC HIỆN
NGUYỄN VIỆT HUỲNH MAI
DUYỆT


KHÁI NIỆM
KHÁI NIỆM


1.CÂY
1.CÂY
Cây là một tập hữu hạn các nút, trong đó có
Cây là một tập hữu hạn các nút, trong đó có
một nút đặc biệt gọi là gốc (root). Giữa các nút
một nút đặc biệt gọi là gốc (root). Giữa các nút
có một quan hệ phân cấp gọi là “quan hệ cha
có một quan hệ phân cấp gọi là “quan hệ cha
con”.


con”.


2. CÂY NHỊ PHÂN
2. CÂY NHỊ PHÂN
Cây nhò phân là cây có thứ tự và có đặc điểm
Cây nhò phân là cây có thứ tự và có đặc điểm
mọi nút trên cây có tối đa 2 con:
mọi nút trên cây có tối đa 2 con:










Cây con trái
Cây con trái






Cây con phải
Cây con phải



KHÁI NIỆM(tt)
KHÁI NIỆM(tt)
3. CÂY TÌM KIẾM NHỊ PHÂN
3. CÂY TÌM KIẾM NHỊ PHÂN
- Cây tìm kiếm nhò phân được tổ chức theo một cây nhò
- Cây tìm kiếm nhò phân được tổ chức theo một cây nhò
phân.
phân.
- Cây tìm kiếm nhò phân có thể được biểu diễn bởi một
- Cây tìm kiếm nhò phân có thể được biểu diễn bởi một
cấu trúc dữ liệu nối kết.
cấu trúc dữ liệu nối kết.
- Ngoài một trường key, mỗi nút chứa một trường left,
- Ngoài một trường key, mỗi nút chứa một trường left,
right và p trỏ đến các nút tương ứng với con trái, con phải
right và p trỏ đến các nút tương ứng với con trái, con phải
và cha của nó. Nếu thiếu một con hoặc cha trường thích
và cha của nó. Nếu thiếu một con hoặc cha trường thích
hợp sẽ chứa giá trò NIL. Nút gốc là nút duy nhất trong cây
hợp sẽ chứa giá trò NIL. Nút gốc là nút duy nhất trong cây
có trường cha là NIL.
có trường cha là NIL.
- Các khoá trong cây tìm kiếm nhò phân được lưu trữ
- Các khoá trong cây tìm kiếm nhò phân được lưu trữ
theo tính chất sau:
theo tính chất sau:
- Cho x là một nút trong cây tìm kiếm nhò phân. Nếu y
- Cho x là một nút trong cây tìm kiếm nhò phân. Nếu y
là một nút trong cây con trái của x, thì key[y] ≤ key[x].

là một nút trong cây con trái của x, thì key[y] ≤ key[x].
Nếu y là một nút trong cây con phải của x, thì key[x] ≤
Nếu y là một nút trong cây con phải của x, thì key[x] ≤
key[y].
key[y].


0
KHÁI NIỆM(tt)
KHÁI NIỆM(tt)
4. VÍ DỤ CÂY TÌM KIẾM NHỊ PHÂN
4. VÍ DỤ CÂY TÌM KIẾM NHỊ PHÂN
1 4 4 5 1080 1 4 4 5 108
Chọn nút số 4 làm nút gốc
Các nút con là 1 0 4 5 8 10
Chọn nút số 0 làm nút gốc
Các nút con là 1 5 4 4 8 10
0 1 4 4 5 108


DUYỆT CÂY
DUYỆT CÂY
1. Duyệt theo thứ tự trước (NODE-LEFT-RIGHT)
NLR_TREE(x)
1. IF X<>NIL THEN
2. PRINT key(x)
3. NLR_TREE(Left[x])
4. NLR_TREE(Right[x])
0
1

4
4
5
10
8
4
Kết quả duyệt:
4
1
1
0
0
4
4
5
5
8
8
10
10
Ý tưởng:
Thăm nút gốc sau đó thăm các nút
của cây con trái rồi đến cây con phải


DUYỆT CÂY
DUYỆT CÂY
2. Duyệt theo thứ tự giữa (LEFT-NODE-RIGHT)
LNR_TREE(x)
1. IF X<>NIL THEN

2. LNR_TREE(Left[x])
3. PRINT key(x)
4. LNR_TREE(Right[x])
0
1
4
4
5
10
8
4
Kết quả duyệt:
4
1
1
0
0
4
4
5
5
8
8
10
10
Ý tưởng:
Thăm các nút của cây con trái sau đó
thăm nút gốc rồi đến cây con phải



DUYỆT CÂY
DUYỆT CÂY
3. Duyệt theo thứ tự sau (LEFT- RIGHT- NODE)
LRN_TREE(x)
1. IF X<>NIL THEN
2. LRN_TREE(Left[x])
3. LRN_TREE(Right[x])
4. PRINT key(x)
0
1
4
4
5
10
8
4
Kết quả duyệt:
4
1
1
0
0
4
4
5
5
8
8
10
10

Ý tưởng:
Thăm các nút của cây con trái sau đó
thăm đến cây con phải rồi đến nút gốc

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×