Bài giảng Cấu trúc dữ liệu và giải thuật - Bài 8: Cây - Đào Nam Anh

pdf 21 trang ngocly 25/05/2021 800
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cấu trúc dữ liệu và giải thuật - Bài 8: Cây - Đào Nam Anh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_cau_truc_du_lieu_va_giai_thuat_bai_8_cay_dao_nam_a.pdf

Nội dung text: Bài giảng Cấu trúc dữ liệu và giải thuật - Bài 8: Cây - Đào Nam Anh

  1. DATA STRUCTURE AND ALGORITHM Trees CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cây Dr. Dao Nam Anh Data Structure and Algorithm 1
  2. Resource - Reference Slides adapted from James B D Joshi, edit by Dao Nam Anh. Major Reference: • Robert Sedgewick, and Kevin Wayne, “Algorithms” Princeton University, 2011, Addison Wesley • Algorithm in C (Parts 1-5 Bundle)- Third Edition by Robert Sedgewick, Addison-Wesley • Cấu trúc dữ liệu và giải thuật, Đinh Mạnh Tường. • Giải thuật và lập trình, Lê Minh Hoàng, Đại Học Sư Phạm, 2002 Data Structure and Algorithm 2
  3. Tree - Cây A B E C D F I G H Data Structure and Algorithm 3
  4. Tree - Cây • Cây là một cấu trúc dữ liệu gồm một tập hữu hạn các nút, A giữa các nút có một quan hệ phân cấp gọi là quan hệ "cha E - con". B • Có một nút đặc biệt gọi là gốc (root). C D F I G H Data Structure and Algorithm 4
  5. Tree - Cây • Có thể định nghĩa cây bằng các đệ quy như sau: A Mỗi nút là một cây, nút đó cũng là gốc E của cây ấy B C D F I G H Data Structure and Algorithm 5
  6. Tree - Cây • Đỉnh root • Cha –con A • Ngang hàng parent • Lá child • Cây nhị phân: mọi nút trên cây chỉ có tối đa B sibling E hai nhánh con. Với một nút thì người ta cũng phân biệt cây con C D F I trái và cây con phải của nút đó. G H Binary tree Leaves/terminal nodes Data Structure and Algorithm 6
  7. Tree - Cây • Chiều cao (height) hay chiều sâu (depth) của một cây là số mức lớn A nhất của nút có trên cây đó. • Một tập hợp các cây B E phân biệt được gọi là rừng (forest), một cây cũng là một rừng. Nếu C D F I bỏ nút gốc trên cây thì sẽ tạo thành một rừng các G H cây con. Data Structure and Algorithm 7
  8. Tree - Cây Ví dụ: • Mục lục của một cuốn A sách với phần, chương, bài, mục • Cấu trúc thư mục trên đĩa B E • Gia phả của một họ tộc cũng có cấu trúc cây. • Một biểu thức số học C D F I gồm các phép toán cộng, trừ, nhân, chia G H Data Structure and Algorithm 8
  9. Biểu diễn cây Biểu diễn bằng mảng: • Nếu có một cây nhị phân đầy đủ, ta có thể đánh số cho các nút trên cây đó theo thứ tự lần lượt từ mức 1 trở đi, hết mức này đến mức khác và từ trái sang phải đối với các nút ở mỗi mức. • Trong trường hợp cây nhị phân không đầy đủ, ta có thể thêm vào một số nút giả để được cây nhị phân đầy đủ, và gán những giá trị đặc biệt cho những phần tử trong mảng T tương ứng với những nút này. Hoặc dùng thêm một mảng phụ để đánh dấu những nút nào là nút giả tự ta thêm vào. • Gặp phải sự lãng phí bộ nhớ vì có thể sẽ phải thêm rất nhiều nút giả vào thì mới được cây nhị phân đầy đủ. Data Structure and Algorithm 9
  10. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 10
  11. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 11
  12. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 12
  13. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 13
  14. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 14
  15. Biểu diễn cây bằng cấu trúc liên kết Data Structure and Algorithm 15
  16. Binary tree – Cây nhị phân • Cây nhị phân suy biến (degenerate binary tree), các nút không phải là lá chỉ có một nhánh con. • Trong các cây nhị phân có cùng số lượng nút như nhau thì cây nhị phân suy biến có chiều cao lớn nhất, còn cây nhị phân hoàn chỉnh thì có chiều cao nhỏ nhất. • Số lượng tối đa các nút trên mức i của cây nhị phân là 2i-1, tối thiểu là 1 (i ≥ 1). • Số lượng tối đa các nút trên một cây nhị phân có chiều cao h là 2h-1, tối thiểu là h (h ≥ 1). • Cây nhị phân hoàn chỉnh có n nút thì chiều cao là h = [lg(n)] + 1. Data Structure and Algorithm 16
  17. Duyệt cây nhị phân A • Preorder  Visit a node,  Visit left subtree,  Visit right subtree B E • Inorder  Visit left subtree, C D F I  Visit a node,  Visit right subtree G H • Postorder  Visit left subtree,  Visit right subtree  Visit a node Data Structure and Algorithm 17
  18. Duyệt cây nhị phân Duyệt theo thứ tự trước: A • giá trị trong mỗi nút bất kỳ sẽ được liệt kê trước giá trị lưu trong hai nút con của nó B E Preorder C D F I • Visit a node, • Visit left subtree, G H • Visit right subtree A B C D E F G H I Data Structure and Algorithm 18
  19. Duyệt cây nhị phân Duyệt theo thứ tự giữa: A • giá trị trong mỗi nút bất kỳ sẽ được liệt kê sau giá trị lưu ở nút con trái và được liệt kê B E trước giá trị lưu ở nút con phải của nút đó C D F I • Inorder G H  Visit left subtree,  Visit a node,  Visit right subtree C B D A G F H E I Data Structure and Algorithm 19
  20. Duyệt cây nhị phân Duyệt theo thứ tự sau: A giá trị trong mỗi nút bất kỳ sẽ được liệt kê sau giá trị lưu ở hai nút con của nút đó B E • Postorder C D F I  Visit left subtree,  Visit right subtree  Visit a node G H C D B G H F I E A Data Structure and Algorithm 20
  21. Discussion – Câu hỏi • structure-algorithm Data Structure and Algorithm 21