1. Trang chủ
  2. » Tất cả

nuinvtnu_Chuong 3. [3.1] CayTQ

23 1 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 23
Dung lượng 1,42 MB

Nội dung

CHƢƠNG MƠ HÌNH DỮ LIỆU CÂY © nuinvtnu-2017 Data structures and Algorithms Chapter - 1/23 CÂY TỔNG QUÁT Cây tổng quát hay gọi đa phân – gọi tắt Đinh nghĩa: Tập có đỉnh cây, có gốc đỉnh Giả sử T1 , T2 , , Tk (k  1) có gốc tương ứng r1, r2, , rk ; T1 , T2 , , Tk đôi không cắt Nếu r đỉnh không thuộc T1 , T2 , , Tk tập T gồm đỉnh r tất đỉnh Ti làm thành gốc r © nuinvtnu-2017 Data structures and Algorithms Chapter - 2/23 Cây tổng quát Như vậy: bao gồm tập hữu hạn đỉnh, có đỉnh đặc biệt gọi gốc (root) Giữa đỉnh có quan hệ phân cấp gọi quan hệ cha - Nếu a đỉnh gốc con, b gốc đỉnh a ta nói a đỉnh cha cịn b đỉnh Các khái niệm cây:  Nếu tập đỉnh = rỗng => Cây rỗng  Bậc đỉnh: Số đỉnh gọi bậc đỉnh Đỉnh có bậc = gọi (đỉnh tận cùng), đỉnh không gọi đỉnh  Đỉnh anh em: Các đỉnh có cha (xét từ trái sang phải)  Rừng: Tập phân biệt © nuinvtnu-2017 Data structures and Algorithms Chapter - 3/23 Cây tổng quát     Mức: Gốc có mức (level = 0) Nếu đỉnh cha có mức i đỉnh có mức i+1 Chiều cao cây: (height) số mức lớn đỉnh có Đƣờng đi: Một dãy đỉnh a1, a2, , an (n>0) cho cha ai+1 gọi đường từ a1 đến an với độ dài n-1 Luôn tồn đường từ gốc đến đỉnh Cây đƣợc sắp: Là mà đỉnh xếp theo thứ tự Nếu đỉnh a có đỉnh b1, b2, , bm theo thứ tự ta nói b1 trưởng b2 em liền kề © nuinvtnu-2017 Data structures and Algorithms Chapter - 4/23 Cây tổng quát Các phép toán cây: Giả sử, xét gốc T PARENT(n): trả nút cha nút n T, n nút gốc hàm cho giá trị $ ELDEST_CHILD(n): cho nút trái nút n T, n hàm cho giá trị $ NEXT_SIBLING(n): cho nút anh em ruột phải nút n T, n khơng có anh em ruột phải hàm cho giá trị $ value(n) Trả giá trị lưu nút n T Duyệt cây: Traverser/Visit © nuinvtnu-2017 Data structures and Algorithms Chapter - 5/23 Thăm ( duyệt) Duyệt cây: Là phép thăm tất đỉnh cây, cho đỉnh thăm lần Ba phương pháp duyệt bản: Duyệt theo thứ tự trước - Preorder(T) Duyệt theo thứ tự - Inorder(T) Duyệt theo thứ tự sau - Postorder(T) © nuinvtnu-2017 Data structures and Algorithms Chapter - 6/23 Duyệt theo thứ tự trƣớc Duyệt theo thứ tự trước: Thứ tự duyệt sau: Nếu rỗng: => thông báo rỗng Ngược lại: Thăm gốc Thăm T1, T2, T3, , Tn theo thứ tự trước => Gốc T1 T2 T3 Tn Ví dụ: © nuinvtnu-2017 Data structures and Algorithms Chapter - 7/23 Duyệt theo thứ tự trƣớc Giải thuật: void PreOrder(Tree T) { NodeType C; Visit(T); // thăm gốc C= EldestChild(T); // Con T while(C!=$) { PreOrder(C); C= NextSibling(T); } } © nuinvtnu-2017 Data structures and Algorithms Chapter - 8/23 Duyệt theo thứ tự (InOrder) Nguyên tắc duyệt theo thứ tự giữa: Nếu rỗng: Thông báo rỗng không duyệt Ngược lại thứ tự duyệt sau: Duyệt thứ T1 theo thứ tự Thăm gốc T Duyệt lại T2, T3, , Tn theo thứ tự Ví dụ © nuinvtnu-2017 Data structures and Algorithms Chapter - 9/23 Duyệt theo thứ tự Giải thuật: void InOrder (Tree T) { NodeType C; C= EldestChild(T); // Con T if( C!= $) { InOrder(C); C = NextSibling(C); } Visit(T); while (C!=$) { InOrder(C); C = NextSibling(C); } } © nuinvtnu-2017 Data structures and Algorithms Chapter - 10/23 Duyệt theo thứ tự sau Nguyên tắc duyệt theo thứ tự sau: Nếu rỗng: thông báo rỗng không duyệt Ngược lại thứ tự duyệt sau: Thăm T1, T2, T3, , Tn theo thứ tự sau Thăm gốc T © nuinvtnu-2017 Data structures and Algorithms Chapter - 11/23 Duyệt theo thứ tự sau * Giải thuật: void PostOrder(Tree T){ NodeType C; C = EldestChild (T); //con while (C != $) { PostOrder (C); C = NextSibling (C); //em liền kề } Visit (T); //Thăm cha } © nuinvtnu-2017 Data structures and Algorithms Chapter - 12/23 Cài đặt Các phương pháp biểu diễn cây: Biểu diễn danh sách đỉnh Biểu diễn trƣởng em liền kề đỉnh Biểu diễn cha đỉnh © nuinvtnu-2017 Data structures and Algorithms Chapter - 13/23 Biểu diễn danh sách đỉnh © nuinvtnu-2017 Data structures and Algorithms Chapter - 14/23 Biểu diễn cha đỉnh © nuinvtnu-2017 Data structures and Algorithms Chapter - 15/23 Biểu diễn trƣởng em liền kề Mô tả phƣơng pháp biểu diễn: Mỗi đỉnh cần lưu trữ thông tin:    Dữ liệu đỉnh (infor) Con trưởng đỉnh (EldestChild): Lưu ID Em liền kề đỉnh (NextSibling) : Lưu ID Mỗi đỉnh, cịn gọi nút xem cấu trúc gồm trường: infor, EldestChild, NextSibling Các đỉnh tổ chức lưu trữ mảng gồm tối đa n phần tử lưu trữ dạng móc nối  © nuinvtnu-2017 Data structures and Algorithms Chapter - 16/23 Biểu diễn trƣởng em liền kề Biểu diễn mảng Các đỉnh tổ chức lưu trữ mảng gồm tối đa n phần tử Mỗi đỉnh tổ chức lưu trữ cấu trúc gọi nút Ví dụ: Xét hình ảnh sau biểu diễn © nuinvtnu-2017 Data structures and Algorithms Chapter - 17/23 Biểu diễn trƣởng em liền kề Biểu diễn mảng Dạng biểu diễn: # define N struct Node { item Infor; int EldestChild; int NextSibling; }; typedef struct Tree { Node Elements[N]; }; Tree T; © nuinvtnu-2017 Data structures and Algorithms Chapter - 18/23 Biểu diễn trƣởng em liền kề Cài đặt số phép toán Tìm cha đỉnh thứ k T: + Duyệt đỉnh cây, xuất phát từ gốc (i =1), kiểm tra xem trưởng J i có = k hay khơng? Nếu có => i cha cần tìm + Ngược lại, kiểm tra em liền kề trưởng J có k hay khơng Nếu i là cần tìm Nếu khơng, kiểm tra J em liền kề J cũ.cứ tiếp tục kiểm tra hết i mà khơng có = k duyệt đỉnh i cây, ngược lại dừng việc tìm kiếm kết luận i đỉnh cha cần tìm © nuinvtnu-2017 Data structures and Algorithms Chapter - 19/23 Biểu diễn trƣởng em liền kề Giải thuật: © nuinvtnu-2017 int Parent(Tree T, int k) { int i=0,j, found = 0; While (( i Mỗi đỉnh xem cấu trúc gồm trường: Infor, EldestChild, NextSibling Cấu trúc nút có dạng sau: EldestChild Infor NextSibling - Các đỉnh tổ chức lưu trữ móc nối thơng qua chế lưu địa © nuinvtnu-2017 Data structures and Algorithms Chapter - 21/23 Biểu diễn trƣởng em liền kề Cài đặt trỏ Dạng cài đặt struct Node{ item Infor; struct Node *EldestChild; struct Node *NextSibling; }; typedef struct Node *Tree; Tree root; © nuinvtnu-2017 Data structures and Algorithms Chapter - 22/23 Biểu diễn trƣởng em liền kề Ví dụ: © nuinvtnu-2017 Data structures and Algorithms Chapter - 23/23

Ngày đăng: 11/12/2019, 15:02

w