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

Bài giảng cấu trúc dữ liệu chương 9 nguyễn xuân vinh

66 327 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 66
Dung lượng 507,09 KB

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

Nội dung

 Root node: nút gốc: không có nút cha Leaf node: nút lá: không có nút con  Internal node: nút trong: không phải nút con và nút gốc  Height: chiều cao: khoảng cách từ gốc đến lá  Par

Trang 4

 Quan hệ one-to-many giữa các nút

 Có duy nhất một đường đi từ gốc đến một nút

 Các loại cây:

 Nhị phân: mỗi nút có {0,1, 2} nút con

 Tam phân: mỗi nút có {0,1,2,3} nút con

 n-phân: mỗi nút có {0,1, ,n} nút con

Trang 6

LF

AK

Q

nút gốc

Cạnh

Trang 7

 Root node: nút gốc: không có nút cha

 Leaf node: nút lá: không có nút con

 Internal node: nút trong: không phải nút con và nút gốc

 Height: chiều cao: khoảng cách từ gốc đến lá

 Parent node (or ancestor, or superior): nút cha

 Child nodes (successor): nút con

Trang 8

Node E Node D

Node C

Node K Node J

Node L Node I

Trang 10

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

 Cây nhị phân tìm kiếm cân bằng AVL

Trang 11

 Cấu trúc cây đơn giản nhất

 Tại mỗi nút gồm các 3 thành phần

 Phần data: chứa giá trị, thông tin…

 Liên kết đến nút con trái (nếu có)

 Liên kết đến nút con phải (nếu có)

 Cây nhị phân có thể rỗng (ko có nút nào)

 Cây NP khác rỗng có 1 nút gốc

 Có duy nhất 1 đường đi từ gốc đến 1 nút

 Nút không có nút con bên trái và con bên phải là nút lá

Trang 13

 Nút gốc và nút trung gian có đúng 2 con

 Cây nhị phân đúng có n nút lá thì số nút trên cây 2n-1

A

Trang 14

 Cây nhị phân đầy đủ với chiều sâu d

 Phải là cây nhị phân đúng

Trang 15

 Do cây là cấu trúc phi tuyến tính

 3 cách duyệt cây nhị phân

A

Trang 19

Biến parent dùng để lưu trữ chỉ số của nút cha.

Biến data dùng để lưu trữ thông tin của nút đó

 Một biến maxNode để giữ số nút hiện tại đang có trên cây

Trang 20

 hàm PARENT(n,T) tốn chỉ một hằng thời gian để lấy ra cha của nút n trong cây T.

 Các hàm đòi hỏi thông tin về các con không làm việc tốt vì phải tốn vòng lặp để dò tìm

 Tìm nút con trái nhất của nút i là không thể xác định được

 Cách khắc phục qui ước cách đánh thứ tự như sau:

Đánh số theo thứ tự tăng dần bắt đầu tại nút gốc

Nút cha được đánh số trước các nút con

Các nút con cùng một nút cha được đánh số lần lượt từ trái sang phải

Trang 21

Cài đặt cây: bằng danh sách con

 Mỗi nút có 1 danh sách các nút con

 Danh sách có thể được cài đặt bằng bất cứ cách nào ta biết Tuy nhiên dùng danh sách liên kết sẽ thích hợp hơn vì

số nút con ta chưa biết trước

 Nhận xét:

 Hàm đòi hỏi thông tin về các con làm việc rất thuận lợi

 Hàm PARENT, Root lại không làm việc tốt Nó đòi hỏi ta phải duyệt tất cả các danh sách chứa các nút con

Trang 23

 Các cấu trúc đã dùng để mô tả cây ở trên không trợ giúp phép tạo một cây lớn từ các cây nhỏ hơn (createI)

 Ta thay thế mảng các header bằng mảng CELLSPACE chứa các struct có ba trường:

 LABELS giữ nhãn của nút

 LEFTMOST_CHILD là nút con trái nhất của nó

 RIGHT_SIBLING là nút anh ruột phải

 Hơn nữa mảng này giữ tất cả các nút của tất cả các cây

23

Cài đặt cây: theo con trái nhất và anh em ruột phải

Trang 24

pTree

Trang 31

II. visit root

III. For each remain child k of root

InOrder(k)

Thứ tự: C B A F E D

A

D B

Trang 35

 Xác định độ sâu/chiều cao của cây

 Tìm giá trị nhỏ nhất/lớn nhất trên cây

 Tính tổng các giá trị trên cây

 Đếm số nút có giá trị bằng x

Trang 36

 Cây nhị phân (Binary Tree)

Cây nhị phân tìm kiếm (Binary Search Tree)

 Cây nhị phân tìm kiếm cân bằng AVL

Trang 37

 BST là cây nhị phân mà mỗi nút thoả

 Giá trị của tất cả nút con trái < nút gốc

 Giá trị của tất cả nút con phải > nút gốc

Trang 38

Binary search trees

Non-binary search tree

25 45

Trang 42

 Thời gian tìm kiếm

 Dựa trên chiều cao của cây

Trang 43

Nếu nút = NULL => ko tìm thấy

Nếu khoá x = khóa nút gốc => tìm thấy

Ngược lại nếu khoá x < khoá nút gốc => Tìm trên cây bên trái

Ngược lại => tìm trên cây bên phải

Trang 44

 Giá trị nhỏ hơn ở bên cây con trái

 Giá trị lớn hơn ở bên cây con phải

Trang 45

 Thực hiện tìm kiếm giá trị x

 Tìm đến cuối nút Y (nếu x ko tồn tại trong cây)

 Nếu x < y, thêm nút lá x bên trái của Y

 Nếu x > y, thêm nút lá x bên phải của Y

Trang 46

 Delete: xóa nhưng phải đảm bảo vẫn là cây BST

 Thực hiện tìm nút có giá trị x

 Nếu nút là nút lá, delete nút

 Ngược lại

Y là nút lớn nhất của cây con bên trái

Z là nút nhỏ nhất của cây con bên phải

Trang 47

 Trường hợp 1: nút p là nút lá, xoá bình thường

Trang 48

 Trường hợp 2: p chỉ có 1 cây con, cho nút cha của p trỏ tới nút con duy nhất của nó, rồi hủy p

Trang 49

 Trường hợp 3: nút p có 2 cây con, chọn nút thay thế theo 1 trong 2 cách như sau

 Nút lớn nhất trong cây con bên trái

 Nút nhỏ nhất trong cây con bên phải

Nút lớn bên trái

Nút nhỏ bên phải

Trang 52

 Minh họa xóa (25)

Trang 53

 Minh họa xóa (25)

Trang 54

 Minh họa xóa (25)

Trang 55

 Minh họa xóa (25)

Trang 56

 Minh họa xóa (25)

Trang 62

 Nếu T = NULL ⇒ thoát

 Nếu T->info > x ⇒ Remove(T->left, x)

 Nếu T->info <x ⇒ Remove(T->right, x)

 Nếu T->info = x

P = T

Nếu T có 1 nút con thì T trỏ đến nút con đó

Ngược lại có 2 con

Gọi f = p và rp = p->right;

Tìm nút rp sao cho rp->left = null và nút f là nút cha nút rp

Thay đổi giá trị nội dung của T và rp

Nếu f = p (trường hợp đặc biệt) thì: f->right = rp->right;

Ngược lại: f->left = rp->right;

P = rp; // p trỏ tới rp để xoá

Xoá P

Trang 63

1. Cài đặt cấu trúc dữ liệu liên kết cho cây nhị phân tìm kiếm

2. Cài đặt các thao tác xây dựng cây: NewNode, Init, IsEmpty, CreateNode

3. Cài đặt thao tác cập nhật: Insert, Remove, ClearTree

4. Xuất danh sách tăng dần và giảm dần

5. Kiểm tra xem cây có phải là cây nhị phân đúng

6. Kiểm tra xem cây có phải là cây nhị phân đầy đủ

7. Xác định nút cha của nút chứa khoá x

8. Đếm số nút lá, nút giữa, kích thước của cây

9. Xác định độ sâu/chiều cao của cây

10. Tìm giá trị nhỏ nhất/lớn nhất trên cây

11. Tính tổng các giá trị trên cây

Trang 65

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

 Các phép toán: Create, Insert, Delete (remove)

Ngày đăng: 03/12/2015, 06:44

TỪ KHÓA LIÊN QUAN

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