1. Trang chủ
  2. » Tất cả

Cấu trúc dữ liệu và thuật toán copy of ctdl 03 tree

140 5 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Cấu trúc cây
Tác giả Văn Chí Nam, Nguyễn Thị Hồng Nhung, Đặng Nguyễn Đức Tiến
Trường học Đại Học Khoa Học Tự Nhiên - Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài giảng
Năm xuất bản 2011
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 140
Dung lượng 838,55 KB

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

Nội dung

Slide 1 Cấu trúc cây Giảng viên Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Cấu trúc dữ liệu và giải thuật 1 Nội dung trình bày Cấu trúc dữ liệu và giải thuật HCMUS 2011 2 Bổ sung Compl[.]

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

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

Trang 3

Khái niệm

3

Trang 5

Cây tổng quát

a b

d

k q

c g

h n

Trang 6

Cây tổng quát

Trang 7

Định nghĩa

Cây (cây có gốc) được xác định đệ quy như sau:

1 Tập hợp gồm 1 đỉnh là một cây Cây này có gốc là

đỉnh duy nhất của nó.

2 Gọi T1, T2, … Tk (k ≥ 1) là các cây không cắt nhau có

gốc tương ứng r1, r2, … rk

Giả sử r là một đỉnh mới không thuộc các cây Ti Khi đó,

tập hợp T gồm đỉnh r và các cây Ti tạo thành một cây

mới với gốc r Các cây T1, T2, … Tk được gọi là cây con của gốc r.

Trang 11

Các khái niệm

 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

 depth/level: độ sâu/mức

 Mức (độ sâu)của node: Chiều dài của đường đi từ node gốc đến node đó cộng thêm 1.

 height: chiều cao

 Chiều cao cây:

 Cây rỗng: 0

Trang 13

Phép duyệt cây

13

Trang 14

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

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

 Duyệt sau (Post-order)

Trang 15

Eldest-NextSibling(g) = h

Trang 16

k

Trang 19

Biểu diễn cây

19

Trang 20

4 6 9 11

5 7 10 3

8

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.

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

cây con phải.

Trang 27

Cây biểu thức:

Trang 28

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

 Cây nhị phân tìm kiếm là cây nhị phân thỏa mãn các điều kiện sau:

1 Khóa của các đỉnh thuộc cây con trái nhỏ hơn

khóa gố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 31

Thao tác trên

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

Trang 33

Thêm phần tử

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

 Bước 3: Không thể đi tiếp nữa => Tạo node mới với dữ liệu (khóa) cần thêm Kết thúc

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 thấy Kết thúc.

Trang 36

16 1

14 13

9

18

Trang 37

Phép duyệt cây

 Duyệt trước

4 2

20

23

4 2

20 25 23

Trang 38

Phép duyệt cây

4 2

20

23 1

Trang 39

Phép duyệt cây

4 2

Trang 41

P

Quay trái cây P

41

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

 Đố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ụ

 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

 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 49

Định nghĩa

tại mỗi đỉnh của cây, độ cao của cây con trái và

cây con phải không chênh lệch quá 1.

Trang 50

12 8

18 17

Trang 51

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

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 53

4

Trang 54

7

Trang 55

Các trường hợp mất cân bằng

 Mất cân bằng phải-phải (R-R)

12 8

Trang 56

Các trường hợp mất cân bằng

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

12 8

Trang 57

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

 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ị):

Trang 58

P Quay trái cây P

Trang 59

Q

Quay trái cây P

Trang 60

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

 P mất cân bằng phải-trái (RL):

 Bước 1: quay phải Q

 Bước 2: quay trái cây P

Trang 65

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

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

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

Trang 66

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

Trang 71

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

65

Trang 73

AA tree

Cây AA

73

Trang 74

Hình thành

Điển).

Search Trees Made Simple).

Trang 75

Các khái niệm

 Liên kết ngang

Trang 78

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.

[5] Nếu một node không có liên kết ngang phải thì cả hai node con của nó phải cùng mức.

Trang 85

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

 Skew

 Split

Trang 88

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

 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ó).

 Khi thực hiện thao tác Split, node giữa được

tăng thêm một mức.

Trang 89

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

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

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

Trang 90

Thêm phần tử

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

 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 91

Ví dụ

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

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

Trang 93

Ví dụ

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

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

Trang 105

Bài tập

105

Trang 106

Bài tập

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(log 2 n)?

Trang 108

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

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

Trang 110

Bài tập

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 111

Hỏi và Đáp

111

Trang 112

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

Trang 113

Ví dụ

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

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

Trang 114

Ví dụ

4

Thêm 4

Trang 115

Ví dụ

4

7

Trang 116

Ví dụ

4

7 6

Thêm 6

Trang 117

Ví dụ

4

7 6

Trang 119

Ví dụ

Trang 120

Ví dụ

6

7 4

Trang 121

Ví dụ

6

7 4

3

6

7 4

3

Trang 122

Ví dụ

6

7 4

3

Trang 123

Ví dụ

6

7 4

3

5

Trang 124

Ví dụ

6

7 4

Trang 125

Ví dụ

6

7 3

4

5

Trang 126

Ví dụ

6

7 3

4

5

Trang 127

Ví dụ

6

7 3

4

5

Trang 128

Ví dụ

6

7 3

4

5

9

Thêm 9

Trang 129

Ví dụ

6

7 3

4

5

9

Trang 130

Ví dụ

6

7 3

4

Trang 131

Ví dụ

6

9 3

4

5

Trang 139

40

Ngày đăng: 25/03/2023, 07:20

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