1. Trang chủ
  2. » Công Nghệ Thông Tin

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

55 316 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 55
Dung lượng 665,34 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cây Nhị Phân... I.1 Khái Niệm và Ví Dụ6  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

Trang 1

Giảng viên : Nguyễn Minh Thành Email : thanhnm.itc@itc.edu.vn

Chương 4 : CÂY NHỊ PHÂN

Trang 2

4 Các thuật ngữ liên quan

II Cây Nhị Phân

Trang 4

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) ?

Trang 5

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

5

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

Trang 6

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

6

 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

 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)

Trang 7

 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>

Trang 8

I.2 Định Nghĩa

8

Trang 9

I.2 Định Nghĩa

9

Trang 10

I.2 Định Nghĩa

10

Trang 11

I.3 Các Tính Chất Của Cây

Trang 12

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 ?

Trang 13

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

Trang 14

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

14

 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 lá

 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

Trang 15

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

15

 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 lá

 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

Trang 16

II Cây Nhị Phân

16

1. Định nghĩa

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

Trang 19

II.2 Lưu Trữ Cây

19

 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

Trang 20

III Cây Nhị Phân Tìm Kiếm

20

1. Định nghĩa

2. Ý nghĩa

3. Cài đặt

Trang 21

 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

Trang 22

III.2 Ý nghĩa

22

 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.

Trang 23

III.3 Cài đặt

23

 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

Trang 25

III.3 Cài đặt

25

 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ớ)

Trang 26

III.3 Cài đặt

26

 Cấu trúc chương trình

Trang 27

III.3 Cài đặt

27

Thao tác Khởi tạo cây rỗng

void BSTCreate(TREE &t)

{

t = NULL;

}

Thao tác Kiểm tra cây rỗng

int BSTIsEmpty(const TREE &t){

if (t==NULL) return 1;

return 0;

}

Trang 28

III.3 Cài đặt

28

Thao tác Xây dựng cây

• Nếu node cần thêm <

node đang xét thì thêm về bên trái

• Nếu node cần thêm <

node đang xét thì thêm về bên phải

Trang 29

III.3 Cài đặt

29

Thao tác Xây dựng cây

Trang 30

III.3 Cài đặt

30

Thao tác Duyệt Cây

 Có 3 cách duyệt cây

 Duyệt gốc trước (Pre-order) : NLR

 Duyệt gốc giữa (In-Order) : LNR

 Duyệt gốc sau (Post-Order) : LRN

Trang 37

III.3 Cài đặt

37

Xây dựng lại cây sau khi được in ra từ các thao tác Duyệt Cây

 Xây dựng cây từ phép duyệt NLR

 Chọn giá trị đầu làm node gốc

 Lần lượt đưa các giá trị còn lại từ trái sang phải vào cây theo nguyên tắc xây dựng cây

 Xây dựng cây từ phép duyệt LRN

 Chọn giá trị cuối cùng làm gốc

 Lần lượt đưa các giá trị còn lại từ phải sang trái vào cây theo nguyên tắc xây dựng cây

Trang 38

III.3 Cài đặt

38

Xây dựng lại cây sau khi được in ra từ các thao tác Duyệt Cây

 Xây dựng cây từ phép duyệt LNR

 Gọi r là số phần tử của cây

 Giá trị ở giữa được tính như sau : m = r div 2

Trang 39

III.3 Cài đặt

39

 Các thao tác tìm thông tin của cây

 Số node lá

 Số node có 1 cây con

 Số node có 1 cây con phải

 Số node có 1 cây con trái

 Số node có 2 cây con

 Độ cao của cây

 Số node của cây

 Các node trên cùng mức

 Độ dài đường đi từ gốc đến x

Trang 40

III.3 Cài đặt

40

 Các thao tác tìm thông tin của cây

 Số node lá

Trang 41

III.3 Cài đặt

41

 Các thao tác tìm thông tin của cây

 Số node có 1 cây con

Trang 42

III.3 Cài đặt

42

 Các thao tác tìm thông tin của cây

 Tính độ cao của cây

Trang 43

III.3 Cài đặt

43

 Các thao tác tìm thông tin của cây

 Số node cùng mức k

Trang 44

III.3 Cài đặt

44

 Các thao tác tìm thông tin của cây

 Số node có 1 cây con phải

 Số node có 1 cây con trái

 Số node có 2 cây con

 Số node của cây

 Độ dài đường đi từ gốc đến x

Trang 45

III.3 Cài đặt

45

 Các thao tác tìm thông tin của cây

 Số node có 1 cây con phải

Trang 47

III.3 Cài đặt

47

 Các thao tác tìm kiếm

 Tìm x : trả về con trỏ trỏ đến vùng nhớ chứa x

Trang 50

 Node có 1 cây con

 Node có 2 cây con

Trang 51

III.3 Cài đặt

51

Thao tác Xoá node

 Xoá node lá

 Xoá vùng nhớ của node

 Con trỏ của node cha sẽ trỏ đến NULL

 Xoá node có 1 cây con

 Đổi vị trí node cần huỷ và node con

 Xoá node cần huỷ

 Xoá node có 2 cây con

 Tìm phần tử thế mạng cho node cần xoá (phần tử phải nhất bên trái, hoặc trái nhất bên phải)

 Đổi key của node thế mạng với cần xoá

 Xoá node thế mạng

Trang 52

III.3 Cài đặt

52

Thao tác Xoá node

Trang 53

III.3 Cài đặt

53

Thao tác Xoá node

Trang 54

III.3 Cài đặt

54

Thao tác Huỷ toàn bộ cây

Sinh viên tự làm

Trang 55

Hỏi Đáp

55

Ngày đăng: 03/12/2015, 18:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm