Bài giảng Cấu trúc dữ liệu và giải thuật: Cây ‐ Tree
lượt xem 4
download
Bài giảng Cấu trúc dữ liệu và giải thuật: Cây ‐ Tree trình bày những nội dung cơ bản về "Cây" trong thuật toán. Trong chương này người học sẽ tìm hiểu một số nội dung sau: Khái niệm cơ bản, cây, cây nhị phân, duyệt cây. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Cây ‐ Tree
- 3/2/2011 NỘI DUNG CHƯƠNG 3 Khái niệm cơ bản Cây CÂY ‐ TREE Cây nhị phân Duyệt cây KHÁI NIỆM Cây ‐ tree • Biểu diễn mối quan hệ có thứ bậc giữa các đối tượng • Quan hệ giữa các nút là quan hệ cha‐con hoặc ngang hàng Cây phả hệ ‐ family tree 1
- 3/2/2011 KHÁI NIỆM KHÁI NIỆM Các nút ở mức ngoài cùng được Định nghĩa: Cây là một tập hợp gồm các nút. Tập này có thể rỗng, gọi là nút lá – leaf node nếu không thì nó bao gồm một nút được gọi là gốc và một tập Các nút không phải nút lá được gọi rỗng hoặc khác rỗng các cây con , , . . , mà có nút gốc là nút trong – internal node được nối trực tiếp bằng một cạnh từ nút gốc Nút gốc – là nút mà không có nút nào đứng trên nó A Mỗi nhánh có thể được B C xem như là một cây con . . . D E F G H A A KHÁI NIỆM KHÁI NIỆM E C E C • Các nút cùng cha là anh em (sibling) F G H F G H • E và C, hoặc F, G và H • Đường đi từ nút tới nút trên cây là một danh sách các • Nút gốc: là nút không có nút nào đứng trên nút , , . . , trong đó nút là cha của nút . • A là gốc • Độ dài đường đi: là số cạnh trên đường đi. • Nút lá: nút không có nút con • Đường đi qua đỉnh thì có độ dài 1 • E, F, G, H • Đường đi từ nút đến chính nó có độ dài là 0 Đường đi từ A đến H là A, C, H có độ dài 2 Đường đi từ C đến C có độ dài 0 2
- 3/2/2011 A KHÁI NIỆM E C KHÁI NIỆM Biểu diễn cây: thông qua nút cha của nó (cấu trúc liên tiếp) F G H A • Độ sâu/mức (depth/level)của nút: độ dài đường đi từ nút gốc đến chính nó E C • Độ sâu của nút gốc A là 0, của nút G, H là 2 • Độ cao (height) của nút: là độ dài đường đi lớn nhất từ nó đến F G H một nút lá • Độ cao của nút lá E, F, G, H là 0, của nút A là 2 • Độ cao của cây: là độ cao của nút gốc 0 A A C C C • Độ sâu của cây: là độ sâu lớn nhất của nút lá trên cây KHÁI NIỆM KHÁI NIỆM Biểu diễn cây: Con đầu tiên và Biểu diễn cây: danh sách các nút con (cấu trúc liên kết) các nút anh em (cấu trúc liên kết) A A E C struct TreeNode E { E C C F G H DATA_TYPE info; F struct TreeNode *firstChild; struct TreeNode *nextSibling; F G H G } H 3
- 3/2/2011 KHÁI NIỆM KHÁI NIỆM Duyệt cây Duyệt cây • Duyệt cây theo thứ tự trước (pre‐order traversal): xử lý dữ liệu • Duyệt cây theo thứ tự sau (post‐order traversal): xử lý dữ liệu trên nút hiện tại trước sau đó xử lý tiếp đến các nút con của nó trên các nút con trước sau đó mới xử lý dữ liệu trên nút hiện tại A A E C E C F G H F G H In ra các đỉnh khi duyệt theo thứ tự trước: A, E, C, F, G, H In ra các đỉnh khi duyệt theo thứ tự sau: E, F, G, H, C, A CÂY NHỊ PHÂN Cây nhị phân – binary tree: A • Là một tập rỗng, hoặc • Có một nút gốc với hai cây nhị phân con của gốc gọi là cây con trái B C CÂY NHỊ PHÂN (left subtree) và cây con phải (right subtree) D E F G H 4
- 3/2/2011 CÂY NHỊ PHÂN CÂY NHỊ PHÂN Một số cây nhị phân gồm 3 nút khác nhau • Cây nhị phân đầy đủ (full binary tree): • Các nút không phải là lá đều có 2 nút con • Các nút lá có độ sâu bằng nhau • Cây nhị phân đầy đủ chiều cao h có bao nhiêu nút lá? • Cây nhị phân đầy đủ có bao nhiêu nút? CÂY NHỊ PHÂN CÂY NHỊ PHÂN • Cây nhị phân hoàn chỉnh (complete binary tree) chiều cao Cây nhị phân cân bằng (balanced binary tree): là cây nhị phân thỏa • Các nút từ mức 0 tới 1 là cây nhị phân đầy đủ mãn • Một số nút ở mức 1 có thể có 0 hoặc 1 con • Với mọi nút thì chênh lệch chiều cao của cây con trái và cây con • Nếu , là các nút ở mức 1, thì có nhiều con hơn nếu phải không quá 1 nằm ở bên trái Mỗi cây nhị phân hoàn chỉnh là cây cân bằng 5
- 3/2/2011 DUYỆT CÂY – TREE TRAVERSAL Mỗi nút trên cây nhị phân gồm : • Giá trị chứa tại nút • Cây con trái DUYỆT CÂY • Cây con phải Duyệt cây theo thứ tự TREE TRAVERSAL • Thứ tự trước – preorder: Giá trị con trái con phải • Thứ tự giữa – inorder : con trái giá trị con phải • Thứ tự sau – postorder : con trái con phải giá trị DUYỆT CÂY – TREE TRAVERSAL 1 Thứ tự trước : 1, 2, 3 A Thứ tự giữa : 2, 1, 3 2 3 Thứ tự sau : 2, 3, 1 B C D E F ỨNG DỤNG CỦA CÂY NHỊ PHÂN Thứ tự trước : A, B, D, E, G, H, C, D Thứ tự giữa : D, B, G, E, H, A, F, C G H Thứ tự sau : D, G, H, E, B, F, C, A 6
- 3/2/2011 CÂY BIỂU THỨC – EXPRESSION TREE CÂY BIỂU THỨC – EXPRESSION TREE Cây biểu thức – expression tree: xây dựng từ các toán tử và toán • Toán tử 1 ngôi: nút gốc biểu diễn toán tử, chỉ có 1 nút hạng con biểu diễn toán hạng • Toán tử 2 ngôi: gốc là toán tử, 2 nút con lần lượt là toán hạng trái và phải 3 log 3 a + % 2+3 a%3 ++ ! 5! 3++ 2 3 a 3 5 3 / ∗ ^ • Pre‐order traversal ‐> prefix notation CÂY BIỂU THỨC – EXPRESSION TREE • In‐order traversal ‐> infix notation • Post‐order traversal ‐> postfix notation Thuật toán xây dựng cây biểu thức từ biểu thức dạng hậu tố Đọc lần lượt các phần tử của biểu thức hậu tố • Gặp toán hạng: tạo ra cây có 1 nút là toán hạng và đẩy vào stack • Gặp toán tử: ∗ • Nếu là toán tử 1 ngôi: lấy ra 1 cây trong stack, tạo ra 1 cây trong đó toán tử là nút gốc và cây là nút con, sau đó đẩy cây này vào stack / ^ • Nếu là toán tử 2 ngôi: lấy ra 2 cây trong stack , ( được lấy ra trước), tạo cây trong đó toán tử này là gốc và , lần lượt là con trái và con phải của nó, sau đó đẩy cây này vào stack • Sau khi duyệt xong biểu thức hậu tố, cây biểu thức là cây có gốc nằm ở đỉnh của stack 7
- 3/2/2011 ∗ ∗ Ban đầu stack rỗng Gặp Gặp Gặp Gặp Gặp Gặp ∗ Gặp ∗ ∗ ∗ CÂY QUYẾT ĐỊNH, CÂY TÌM KIẾM NHỊ PHÂN BIỂU DIỄN CÂY NHỊ PHÂN Cây quyết định cho thuật toán tìm kiếm nhị phân trên dãy số 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 8
- 3/2/2011 BIỂU DIỄN CÂY NHỊ PHÂN BIỂU DIỄN CÂY NHỊ PHÂN Biểu diễn cây nhị phân Biểu diễn bằng cấu trúc liên kết • Dùng cấu trúc liên tiếp (mảng): số lượng nút trên cây chiều cao là giới hạn (∑ 2 ) struct TreeNode • Truy nhập nhanh 1 { • Lãng phí bộ nhớ lớn nếu cây chưa phải là dạng đầy đủ hoặc DATA_TYPE info; hoàn chỉnh struct TreeNode *leftChild; • Dùng cấu trúc liên kết: thường dùng hơn struct TreeNode *rightChild; } • Truy cập 1 nút chậm hơn • Tiết kiệm bộ nhớ hơn (trong trường hợp tổng quát) struct TreeNode { BIỂU DIỄN CÂY NHỊ PHÂN BIỂU DIỄN CÂY NHỊ PHÂN int data; struct TreeNode *leftChild; struct TreeNode *rightChild; } Duyệt cây theo thứ tự trước void preorderTraversal(TreeNode* root) { if(root==NULL) return; printf("%d ",root‐>data); if(root‐>leftChild!=NULL) inorderTraversal(root‐>leftChild); if(root‐>rightChild!=NULL) inorderTraversal(root‐>rightChild); } 9
- 3/2/2011 10
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 175 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
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 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 59 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 159 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn