1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc cây - Đậu Ngọc Hà Dương

141 12 0

Đ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 141
Dung lượng 1,46 MB

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

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc cây - Đậu Ngọc Hà Dương có nội dung trình bày về khái niệm, phép duyệt cây và biểu diễn cây, cây nhị phân và cây nhị phân tìm kiếm, cây AVL, cây AA,... Mời các bạn cùng tham khảo!

Trang 1

C u trúc d  li u và gi i thu t ấ ữ ệ ả ậ

Cấu trúc cây

Trang 2

Nội dung trình bày

2

Trang 3

Khái niệm

3

Trang 5

Cây tổng quát

5

Trang 6

Cây tổng quát

6

Trang 8

r k Tk

Nút gốc

Cây con

Trang 10

r k Tk

k 2

k 5

k 4 k

3

Trang 11

Các khái niệm

11

 degree/order: bậc

 B c c a node: S  con c a node ậ ủ ố ủ

 B c c a cây: b c l n nh t trong s  các con ậ ủ ậ ớ ấ ố

Trang 12

r k Tk

Nút gốc

Cây con

Nút lá

Độ cao = 4Bậc = k

rk

k 1

k 2

k 5

k 4

k 3

Bậc = 2

Trang 13

Phép duyệt cây

13

Trang 14

 Duy t tr ệ ướ c (Pre­order)

 Duy t gi a (In­order) ệ ữ

Trang 15

Parent(b) = a

Parent(a)?

Child(c) = g

Trang 16

k

Trang 19

Biểu diễn cây

19

Trang 20

Bằng danh sách cây con

20

a

h f

469

11

57

103

8

Trang 21

Bằng danh sách cây con

Trang 22

k

Trang 24

k

Trang 25

 Binary tree

Cây nhị phân

25

Trang 26

Cây nhị phân

 Là cây mà mỗi đỉnh

có bậc tối đa bằng 2.

 Các cây con được

gọi là cây con trái và cây con phải.

Trang 27

30

Trang 28

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

2. Khóa của gốc nhỏ hơn khóa các đỉnh thuộc

cây con phải.

3. Cây con trái và cây con phải của gốc cũng là

cây nhị phân tìm kiếm.

Trang 29

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

Trang 30

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

Trang 31

Thao tác trên

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

Trang 33

Thêm phần tử

33

 Bước 1: Bắt đầu từ gốc

 Bước 2: So sánh dữ liệu (khóa) cần thêm với

dữ liệu (khóa) của node hiện hành.

 N u b ng nhau => Đã t n t i. K t thúc ế ằ ồ ạ ế

 N u nh  h n => Đi qua nhánh trái, Ti p b ế ỏ ơ ế ướ c 2.

 N u l n h n => Đi qua nhánh ph i, Ti p b ế ớ ơ ả ế ướ c 2.

Trang 34

 N u b ng nhau => Tìm th y. K t thúc ế ằ ấ ế

 N u nh  h n => Đi qua nhánh trái, Ti p b ế ỏ ơ ế ướ c 2.

 N u l n h n => Đi qua nhánh ph i, Ti p b ế ớ ơ ả ế ướ c 2.

 Bước 3: Không thể đi tiếp nữa => Không tìm

Trang 36

14 13

9

18

Trang 37

Phép duyệt cây

37

 Duyệt trước

4 2

20

23

42

202523

Trang 38

Phép duyệt cây

38

 Duyệt giữa

4 2

Trang 39

Phép duyệt cây

39

 Duyệt sau

4 2

Trang 40

Phép quay trái

40

a

b T1

Quay trái cây P

Trang 41

Quay trái cây P

41

Trang 42

T 1

P

b

T 3 Quay phải cây P

Trang 43

Phép quay phải

50

55 40

36

40

50 37

Trang 44

Thời gian thực hiện các phép toán

44

 Đối với phép tìm kiếm:

 Tr ườ ng h p t t nh t: m i nút (tr  nút lá) đ u có 2  ợ ố ấ ỗ ừ ề con:  O(log2n)  (chính là chi u cao c a cây) ề ủ

 Tr ườ ng h p x u nh t: cây tr  thành danh sách liên  ợ ấ ấ ở

k t:  ế O(n)

 Tr ườ ng h p trung bình là bao nhiêu? ợ

O(log2n)

Trang 45

Ví dụ

45

 Tạo cây nhị phân tìm kiếm theo thứ tự nhập như sau: 1, 8, 9, 12, 14, 15, 16, 18, 19

Trang 47

 AVL tree

Cây AVL

47

Trang 48

Giới thiệu

48

 Do G.M A delsen V elskii và E.M L endis đưa ra vào năm 1962, đặt tên là cây AVL.

Trang 50

18 17

Trang 51

Xây dựng cây cân bằng

51

 Việc xây dựng cây cân bằng dựa trên cây nhị phân tìm kiếm, chỉ bổ sung thêm 1 giá trị cho biết sự cân bằng của các cây con như thế nào.

Trang 57

Xử lý mất cân bằng

57

 Giả sử tại một node cây xảy ra mất cân bằng bên phải (cây con phải chênh lệch với cây con trái hơn một đơn vị):

 M t cân b ng ph i­ph i (RR) ấ ằ ả ả

 Quay trái

 M t cân b ng ph i­trái (R­L) ấ ằ ả

Trang 58

T3

h

h+1 h

h+1

h P Quay trái cây P

Trang 59

Xử lý mất cân bằng

59

 P mất cân bằng phải-phải (RR):

Trang 60

Q

Quay trái cây P

Trang 62

T4

h

h-1 h

1

T3

T 2

h

h h- 1

P

Q

b

T 4

h Quay phải cây Q

Trang 63

a

c T1

Trang 64

Xử lý mất cân bằng

64

 P mất cân bằng phải-trái (RL) – Bước 1:

Quay phải cây Q

Trang 65

P

Q

Trang 66

Xử lý mất cân bằng

66

 Khi một node cây xảy ra mất cân bằng bên trái (cây con trái chênh lệch với cây con phải hơn một đơn vị): (thực hiện đối xứng với trường hợp mất cân bằng bên phải)

 M t cân b ng trái­trái (LL) ấ ằ

 Quay phải

 M t cân b ng trái­trái (L­R) ấ ằ

 Quay trái

Trang 67

Xử lý mất cân bằng

67

Trang 68

20

Trang 72

Node 50 bị lệch phải !!!

65

Trang 74

 AA tree

Cây AA

74

Trang 76

Các khái niệm

76

 Mức của node

 Liên kết ngang

Trang 79

Liên k t ngang b t bu c h ế ắ ộ ướ ng sang ph i ả

[3] M c c a node cháu bên ph i b t bu c nh  h n m c  ứ ủ ả ắ ộ ỏ ơ ứ

c a node ông ủ

Không t n t i 2 liên k t ngang liên ti p ồ ạ ế ế

[4] M i node có m c l n h n 1 ph i có 2 node con ọ ứ ớ ơ ả

Trang 86

Các phép biến đổi cây

86

 Split

Trang 87

Các phép biến đổi cây

Trang 88

Các phép biến đổi cây

Trang 89

Các phép biến đổi cây

89

 Skew: dùng để loại bỏ liên kết ngang bên trái.

 Split: dùng để loại bỏ 2 liên kết ngang (phải) liên tiếp.

 Biến đổi theo thứ tự Skew -> Split (nếu có).

Trang 90

Các thao tác trên cây

90

 Duyệt cây, Tìm kiếm:

 T ươ ng t  cây nh  phân tìm ki m ự ị ế

 Thêm phần tử

 Xóa phần tử

Trang 91

Thêm phần tử

91

 Thực hiện tương tự trên cây nhị phân tìm kiếm.

 Phần tử được thêm vào luôn ở mức 1.

 Sau khi thêm, thực hiện các thao tác Skew

và/hoặc Split để đảm bảo tính chất của cây.

Trang 92

Ví dụ

92

 V  cây AA theo th  t  nh p sau đây: ẽ ứ ự ậ

4, 7, 6, 3, 5, 9, 15, 27, 8, 40

Trang 94

Ví dụ

94

 Hãy vẽ cây AA theo thứ tự nhập sau đây:

 40, 8, 27, 15, 9, 5, 3, 6, 7, 4

Trang 106

Bài tập

106

Trang 107

Bài tập

107

1 Xây dựng giải thuật xóa một đỉnh với khóa cho

trước ra khỏi cây nhị phân tìm kiếm.

2 Hãy chứng tỏ rằng trường hợp tìm kiếm trung

bình cho cây nhị phân tìm kiếm là O(log2n)?

Trang 108

 Cho bi t k t qu  sau khi duy t cây theo các trình t   ế ế ả ệ ự

gi a, tr ữ ướ c và sau.

Trang 109

- Tính độ cao của 1 node trong cây.

- Xuất ra các node có cùng độ cao.

Trang 111

Bài tập

111

6 Hãy vẽ cây AVL với 12 nút có chiều cao cực đại trong tất cả các cây AVL 12 nút.

7 Tìm 1 dãy N khoá sao cho khi lần lượt dùng

thuật toán thêm vào cây AVL sẽ phải thực hiện

mỗi thao tác cân bằng (LL, LR, RL, RR) lại ít nhất

1 lần

Trang 112

Hỏi và Đáp

112

Trang 113

Đọc thêm ví dụ thêm phần tử

113

Trang 114

Ví dụ

114

 V  cây AA theo th  t  nh p sau đây: ẽ ứ ự ậ

4, 7, 6, 3, 5, 9, 15, 27, 8, 40

Trang 115

Ví dụ

115

4

Trang 118

Ví dụ

118

4

76

Thêm 6

Trang 120

Ví dụ

120

Hai liên k t ngang liên ti pế ế

Trang 121

Ví dụ

121

6

74

Trang 122

Ví dụ

122

6

74

3

6

74

3

Thêm 3

Trang 123

Ví dụ

123

6

74

3

Trang 124

Ví dụ

124

6

74

3

5

Thêm 5

Trang 125

Ví dụ

125

6

74

Trang 127

Ví dụ

127

6

73

4

5

Trang 128

Ví dụ

128

6

73

4

5

Trang 129

Ví dụ

129

6

73

4

5

9

Trang 130

Ví dụ

130

6

73

4

5

9

Trang 131

Ví dụ

131

6

73

4

Trang 132

Ví dụ

132

6

93

4

5

Trang 136

Thêm 8

Trang 140

40

Ngày đăng: 11/09/2021, 13:41

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