Vi ệc phân cấp cấu trúc dữ liệu được dùng cho minh họa lược đồ công việc.. T ổ chức của một đơn vị.[r]
Trang 1Gi ảng viên: TS Ngo Huu Phuc
Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com
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
Trang 2N ội dung bài học:
17.1 Khái ni ệm về cây.
17.2 Các phương pháp duyệt cây.
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 317.1 Khái ni ệm về cây (1/)
17.1.1 Gi ới thiệu.
Trees được dùng cho cấu trúc dữ liệu dạng phân cấp
Ví dụ:
Vi ệc phân cấp cấu trúc dữ liệu được dùng cho minh họa lược đồ công việc
Tổ chức của một đơn vị.
Cây bi ểu thức.
Khoa Công ngh ệ thông tin
BM KHMT BM HTTT BM ANM BM CNPM BM Toán TTMT
Phòng TN Giáo viên 1 Giáo viên 2
Trang 4Câ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 T1,
T2,…,Tn, trong đó Ti cũng là một cây
Trang 517.1 Khái ni ệm về cây (3/)
Hình trên minh họa 1 cây
Tập hợp các node {A, B, C, D, G, H, I, E, F}
A là root
Các node còn lại được chia thành các tập {B, G, H, I}, {C, E, F} và {D} Mỗi tập trên lại tạo thành 1 cây
A
Trang 6 Minh họa trên không phải là một cây
Mặc dù:
T ập hợp các node vẫn là {A, B, C, D, G, H, I, E, F}.
A là root.
Node E thu ộc 2 tập hợp.
Trang 717.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 T0)
Gọi T1, T2, T3, , Tn là các cây con của T0
Mức của T1 = Mức của T2 = = Mức của Tn = Mức của T0 + 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 8 G ốc.
C ạnh (cung).
Node.
G ốc (root)
Lá (leaf)
Trang 917.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 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.
struct node {
TreeEntry data;
struct node *children[max];
};