Tải bản đầy đủ (.pdf) (55 trang)

Bài giảng cấu trúc dữ liệu và giải thuật chương 4 GV nguyễn minh thành

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 (665.34 KB, 55 trang )

Chương 4 : CÂY NHỊ PHÂN
Giảng viên : Nguyễn Minh Thành
Email :


Nội Dung
Cấu Trúc Cây
1. Khái việm và ví dụ
2. Định nghĩa
3. Các tính chất
4. Các thuật ngữ liên quan
II. Cây Nhị Phân
1. Định nghĩa
2. Cách thức lưu trữ cây
III. Cây Nhị Phân Tìm Kiếm
1. Ý nghĩa
2. Định nghĩa
3. Ví dụ
4. Cài đặt
I.

2


I. Cấu Trúc Cây
1.
2.
3.
4.

3



Khái việm và ví dụ
Định nghĩa
Các tính chất
Các thuật ngữ liên quan


I.1 Khái Niệm và Ví Dụ


4

Ví dụ 1: bài toán đưa thư
 Trên thế giới hơn có ~ 10 tỉ người
 Thành, khoa CNTT, CĐ CNTT, TpHCM, Việt Nam.
 Cách tìm ra “Thành” nhanh nhất ?
 Sử dụng mảng ?
 Sứ dụng danh sách liên kết (linked list) ?


I.1 Khái Niệm và Ví Dụ


5

Ví dụ 1: bài toán đưa thư


I.1 Khái Niệm và Ví Dụ
Cây là một cấu trúc dữ liệu quan trọng để biểu diễn và lưu trữ dữ

liệu trong bộ nhớ chính và mang tính “kế thừa”
 Tính kế thừa :
 Các node con phải liên quan đến node cha




6

Các cây mang tính kế thừa :
 Cây gia phả
 Cây phân cấp các loài (sinh vật)


I.2 Định Nghĩa


7

Một cây <T> (Tree) là
 Một tập hợp các phần tử, gọi là các node p1,p2,…,pN
 Nếu N=0, cây <T> gọi là cây rỗng (NULL)
 Nếu N>0 :
 Tồn tại duy nhất một node pk duy nhất gọi là gốc cây
 Các nút còn lại được chia thành m tập không giao nhau :
T1, T2, … TM
 Mỗi Ti cây con của cây <T>


I.2 Định Nghĩa


8


I.2 Định Nghĩa

9


I.2 Định Nghĩa

10


I.3 Các Tính Chất Của Cây
Nút gốc không có nút cha
 Mỗi nút khác chỉ có 1 nút cha
 Mỗi nút có thể có nhiều nút con
 Không có chu trình


11


I.4 Các Thuật Ngữ Liên Quan











12

Node : là 1 phần tử trong cây. Mỗi node chứa 1 dữ liệu bất kỳ
Nhánh : là đoạn nối giữa 2 nút
Node cha
Node con
Nút anh em : là những node có cùng nút cha
Bậc của 1 node pi : là số node con của pi
 Tìm bậc của các node trên cây T trong ví dụ trên ?
Node gốc : node không có node cha
Node lá (node ngoài) : node có bậc = 0 (không có node con)
Node trong (node nhánh) : là node có node con và node cha
Cây con
 Trong cây T có bao nhiêu cây con ?


I.4 Các Thuật Ngữ Liên Quan
Bậc của cây : là bậc lớn nhất của các node trong cây
 Bậc (<T>) = max { bậc(pi) / pi  <T> }
 Tìm bậc của cây T ?
 Đường đi (path) giữa node pi và pj : là dảy các nút liên tiếp từ pi
đến pj sao cho giữa 2 node kề nhau đều có nhánh.
 Độ dài đường đi từ node pi và pj : là số nhánh cần đi qua từ pi đến
pj .



13


I.4 Các Thuật Ngữ Liên Quan
Mức (level)
 Mức (p)=0 nếu p là gốc
 Mức (p) = mức (cha(p)) +1 nếu p không phải gốc
 Chiều cao của cây (hT): đường đi dài nhất từ node gốc đến node

 hT = max { path (gốc, pi) / pi là node lá  <T>}
 Tính chiều cao của cây T trong ví dụ trên


14


I.4 Các Thuật Ngữ Liên Quan
Mức (level)
 Mức (p)=0 nếu p là gốc
 Mức (p) = mức (cha(p)) +1 nếu p không phải gốc
 Chiều cao của cây (hT): đường đi dài nhất từ node gốc đến node

 hT = max { path (gốc, pi) / pi là node lá  <T>}
 Tính chiều cao của cây T trong ví dụ trên


15



II. Cây Nhị Phân
1.

Định nghĩa

2.

Cách thức lưu trữ cây

16


II.1 Định Nghĩa
 Cây Nhị Phân là cây có bậc = 2
 Bậc của các nút trong <=2
 Bậc của nút lá = 0

17


II.1 Định Nghĩa
 Độ cao của cây nhị phân có N node:
 hT(max) = N
 hT(min) = [log2N] + 1

18


II.2 Lưu Trữ Cây
 Có 2 cách tổ chức cây nhị phân :

 Lưu trữ bằng mảng
 Lưu trữ bằng con trỏ cấu trúc
 Chi tiết ở phần Cây Nhị Phân Tìm Kiếm

19


III. Cây Nhị Phân Tìm Kiếm
1.
2.
3.

20

Định nghĩa
Ý nghĩa
Cài đặt


III.1 Định Nghĩa
 Cây nhị phân tìm kiếm
 Là một cây nhị phân
 Giá trị của một node bất kỳ luôn lớn hơn giá trị của

tất cả các node bên trái và nhỏ hơn giá trị tất cả các
node bên phải.
 Giá trị nhỏ nhất nằm ở node trái nhất của cây
 Giá trị lớn nhất nằm ở node phải nhất của cây

21



III.2 Ý nghĩa
 Cây nhị phân tìm kiếm giúp tận dụng hết điểm mạnh

của mảng và danh sách kết trong việc biểu lưu trữ cây.

22


III.3 Cài đặt
 Có 2 cách tổ chức cây nhị phân :
 Lưu trữ bằng mảng
 Lưu trữ bằng con trỏ cấu trúc
 Sử dụng con trỏ cấu trúc (DSLK) là tối ưu hơn

23


III.3 Cài đặt


Định nghĩa dữ liệu

Typedef struct TNODE
{
Data Key;
Struct TNODE pLeft, pRight;
} *TREE;
24



III.3 Cài đặt


Các lưu ý khi cài đặt
 Bước 1 : Khai báo kiểu dữ liệu biểu diễn cây
 Bước 2 : Xây dựng hàm đưa dữ liệu (nhập) vào cây
 Bước 3 : Xây dựng các thao tác duyệt, tìm kiếm, huỷ…



Các lưu ý khác
 Trước khi tạo node mới phải xin cấp phát vùng nhớ
 Trước khi tạo cây mới phải khởi tạo cây rỗng
 Trước khi kết thúc chương trình phải huỷ cây (giải phóng bộ
nhớ).

25


×