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 – Bài 17: Cấu trúc dữ liệu dạng cây

21 32 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 21
Dung lượng 1,17 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 – Bài 17: Cấu trúc dữ liệu dạng cây trình bày kiến thức về khái niệm về cây, các phương pháp duyệt cây. Mời các bạn cùng tham khảo bài giảng để nắm chi tiết kiến thức, hỗ trợ cho quá trình học tập và nghiên cứu.

Trang 1

Gi ảng viên: TS Ngo Huu Phuc

Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com

Bài 17 C ấu trúc dữ liệu dạng cây

Trang 2

1 Deshpande Kakde: C and Data structures.chm, Chapter 21: Trees

2 Elliz Horowitz – Fundamentals of Data Structures.chm, Chapter 5: Trees.

3 Kyle Loudon: Mastering Algorithms with C.chm, Chapter 9 Trees.

4 Bài gi ảng TS Nguyễn Nam Hồng

Trang 4

17.1 Khái ni ệm về cây (2/)

17.1.2 Định nghĩa về tree.

Cây được định nghĩa đệ quy như sau:

M ột cây được định nghĩa bởi một tập các node T có dạng:

 Có m ột node đặc biệt gọi là root

 Các node còn l ại được phân chia rời nhau thành n tập dạng T 1 ,

T 2 ,…,T n , trong đó T i c ũng là một cây.

Trang 7

17.1 Khái ni ệm về cây (5/)

B ậc của một node: là s ố node con của node đó.

B ậc của một cây: là b ậc lớn nhất của các node trên cây

Node g ốc: là node không có node cha

Node lá: là node có b ậc bằng 0

Node nhánh: là node có b ậc khác 0 và không phải là node gốc

M ức của một node:

 G ọi mức của node root là 1 (cây T 0 )

 G ọi T 1 , T 2 , T 3 , , T n là các cây con c ủa T 0

 M ức của T 1 = M ức của T 2 = = M ức của T n = M ức của T 0 + 1=2

Chi ều cao của cây hay độ sâu của cây: là m ức cao lớn nhất

c ủa node trên cây.

Trang 9

17.1 Khái ni ệm về cây (7/)

M ột số ví dụ sử dụng cây:

 Cây ph ả hệ.

 Cây quy ết định.

 S ử dụng cây để tạo queue có độ ưu tiên.

 T ổ chức truy cập dữ liệu nhanh, ví dụ như B-tree.

Trang 10

17.1 Khái ni ệm về cây (8/)

Xây d ựng cây:

 Có th ể xây dựng cây như danh sách liên kết, tuy nhiên

m ỗi thành phần có nhiều con trỏ (nhiều con).

• M ỗi node chứa thông tin về node.

• S ử dụng mảng để lưu các con.

Ví d ụ về khai báo cây:

struct node {

TreeEntry data;

struct node *children[max];

};

Trang 11

17.2 Các phương pháp duyệt cây (1/2)

 Vi ệc thăm tất cả các node trên cây 1 lần được gọi là duyệt cây.

 V ới một cây có n node , như vậy có n! cách duy ệt cây khác

nhau Tuy nhiên, đa số các phép duyệt cây đó không hữu ích.

 Đối với cây tổng quát, có 2 cách duyệt cây thông thường:

 Phương pháp duyệt cây theo chiều rộng ( Breadth-first traversal )

 Phương pháp duyệt cây theo chiều sâu ( Depth-first traversal ).

 V ới một cây có n node, độ phức tạp sẽ là O(n).

Trang 12

17.2 Các phương pháp duyệt cây (2/2)

M ột số thao tác khi duyệt cây:

 Xem t ất cả các node trên cây.

 Tìm ph ần tử lớn nhất hay nhỏ nhất trên cây.

 Xác định số node có trên cây.

 Sao chép cây.

Trang 13

17.2.1 Duy ệt cây theo chiều sâu (1/7)

Các thao tác chính khi duy ệt cây:

 N: Duy ệt node đang xét.

 L: Duy ệt cây con bên trái của node đang xét.

 R: Duy ệt các cây con còn lại của node đang xét.

V ới các thao trên, có 3 cách cơ bản:

 Duy ệt tiền thứ tự (Preorder): NLR

 Duy ệt trung thứ tự (Inorder): LNR

Trang 14

17.2.1 Duy ệt cây theo chiều sâu (2/7)

Duy ệt tiền thứ tự (Preorder): NLR

1 Thăm node đang xét trước các node con của nó.

2 Các node con được thăm theo thứ tự từ trái qua phải.

3 V ới mỗi node con, việc thăm được thực hiện theo dạng tiền

th ứ tự.

Trang 15

17.2.1 Duy ệt cây theo chiều sâu (3/7)

Duy ệt tiền thứ tự (Preorder): NLR

6

9

Trang 16

17.2.1 Duy ệt cây theo chiều sâu (4/7)

Duy ệt trung thứ tự (Inorder): LNR

1 Thăm con thứ nhất của node đang xét dạng trung thứ tự.

2 Thăm node đang xét.

3 Thăm các con còn lại của node đang xét dạng trung thứ tự.

Trang 17

17.2.1 Duy ệt cây theo chiều sâu (5/7)

Duy ệt trung thứ tự (Inorder): LNR

7

9

Trang 18

17.2.1 Duy ệt cây theo chiều sâu (6/7)

Duy ệt hậu thứ tự (Postorder): LRN

1 Thăm con thứ nhất của node đang xét dạng hậu thứ tự.

2 Thăm các con còn lại của node đang xét dạng hậu thứ tự.

3 Thăm node đang xét.

Trang 19

17.2.1 Duy ệt cây theo chiều sâu (7/7)

Duy ệt hậu thứ tự (Postorder): LRN

7

8

Trang 20

17.2.2 Duy ệt cây theo chiều rộng (1/2)

 Thăm các node bắt đầu từ mức thấp nhất cho đến các mức cao.

 T ại mỗi mức, thăm từ trái sang phải.

 S ử dụng queue hỗ trợ trong quá trình duyệt cây.

 Phương pháp này còn được gọi là Level-Order Traversal.

Trang 21

17.2.2 Duy ệt cây theo chiều rộng (2/2)

3

4

Ngày đăng: 24/09/2020, 04:28

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

w