Cấu trúc dữ liệu tree - Cây

42 1.3K 10
Cấu trúc dữ liệu tree - Cây

Đ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

Cấu trúc dữ liệu tree - Cây

1Môn: CẤU TRÚC DỮ LIỆUChương 5: CÂY (TREE) 2NỘI DUNG CHƯƠNG 51. Khái niệm cây – Biểu diễn cây2. Cây nhị phân (Binary Tree)1. Định nghĩa2. Biểu diễn và các thao tác3. Cây nhị phân tìm kiếm (Binary Searching Tree)3. Cây cân bằng (Balanced Tree)1. Định nghĩa – Cấu trúc dữ liệu2. Các thao tác trên cây cân bằngBÀI TẬP 31.Khái niệm cây – Biểu diễn cây1.1 Định nghĩa cây1.2. Một số khái niệm liên quan1.2.a. Bậc của 1 cây1.2.b. Bậc của 1 nút1.2.c. Nút gốc1.2.d. Nút kết thúc 1.2.e. Nút trung gian1.2.f. Mức của 1 nút1.2.g. Chiều cao (chiều sâu) của 1 cây1.2.h. Nút trước, nút sau của 1 nút1.2.i. Nút cha, nút con của 1 nút1.2.j. Chiều dài đường đi của 1 nút1.2.k. Chiều dài đường đi của 1 cây1.2.l. Rừng 41.Khái niệm cây – Biểu diễn cây (tt)1.1 Định nghĩa cây Cây là một tập hợp các phần tử (nút) được tổ chức và có các đặc điểmHoặc là tập hợp rỗng (cây rỗng)Hoặc là tập hợp khác rỗng trong đó có 1 nút duy nhất làm nút gốc (Root’s Node), các nút còn lại được phân thành các nhóm trong đó mỗi nhóm là 1 cây con (Sub-Tree)Các cây con cũng có thể là tập rỗng hay khác rỗng trong đó có 1 nút là gốc cây con. 51.Khái niệm cây – Biểu diễn cây (tt)1.2. Một số khái niệm liên quan1.2.a. Bậc của 1 nútBậc của 1 nút (node’s degree) là số cây con của nút đó1.2.b. Bậc của 1 câyBậc của 1 cây (tree’s degree) là bậc lớn nhất của các nút trong câyCây có bậc N gọi là cây N-phân1.2.c. Nút gốcNút gốc (root’s tree) là nút không phải là nút gốc cây con của bất kỳ 1 cây con nào khác trong cây (nút không làm gốc cây con)1.2.d. Nút kết thúc Nút kết thúc hay còn gọi nút lá (leaf’s node) là nút có bậc = 0 (nút không có nút cây con) 61.Khái niệm cây – Biểu diễn cây (tt)1.2. Một số khái niệm liên quan (tt)1.2.e. Nút trung gianNút trung gian hay còn gọi nút giữa (interior’s node) là nút không phải là nút gốc và cũng không phải nút kết thúc (nút có bậc khác không và là nút gốc của cây con nào đó trong cây)1.2.f. Mức của 1 nútMức của 1 nút (node’s level) bằng mức của nút gốc cây con chứa nó +1.Mức của nút gốc = 11.2.g. Chiều cao (chiều sâu) của 1 câyChiều cao (chiều sâu) của 1 cây (tree’s height | tree’s depth) là mức cao nhất của 1 nút trong cây 1.2.h. Nút trước, nút sau của 1 nútNút T được gọi là nút trước của 1 nút (ancestor’s node) của nút S nếu cây con có gốc là T chứa cây con có gốc là S. Khi đó S được gọi là nút sau của nút T (descendant’s node) 71.Khái niệm cây – Biểu diễn cây (tt)1.2. Một số khái niệm liên quan (tt)1.2.i. Nút cha, nút con của 1 nútNút B được gọi là nút cha (parent’s node) của nút C nếu nút B là nút trước của nút B và mức của nút C lớn hơn mức của B là 1 mức. Khi đó nút C được gọi là nút con (child’s node) của B1.2.j. Chiều dài đường đi của 1 nútChiều dài đường đi của 1 nút là số đỉnh (số nút) tính từ nút gốc để đi đến nút đó.Chiều dài đường đi của nút gốc luôn = 1, chiều dài đường đi tới 1 nút bằng chiều dài đường đi tới nút cha của nó + 1 81.Khái niệm cây – Biểu diễn cây (tt)1.2. Một số khái niệm liên quan (tt)1.2.k. Chiều dài đường đi của 1 câyChiều dài đường đi của 1 cây (path’s length of the tree) là tổng tất cả các chiều dài đường đi của tất cả các nút trên cây (chiều dài đường đi trong internal path’s length).Tính chiều dài đường đi ngoài (external path’s length) bằng cách mở rộng tất cả các nút của cây sao cho các nút của cây có cùng bậc (thêm vào các nút giả) với bậc của cây. Chiều dài đường đi ngoài bằng tổng chiều1.2.l. Rừng.Rừng (forest) là tập hợp các cây.Khi cây mất gốc  rừng 91.Khái niệm cây – Biểu diễn cây (tt)1.3. Biểu diễn câyDùng đồ thị, Dùng giản đồ tập hợp, Sử dụng dạng phân cấp chỉ số BIỂU DIỄN CÂY TRONG BỘ NHỚ MÁY TÍNHĐể biểu diễn cây trong bộ nhớ máy tính dùng danh sách liên kết.Để biểu diễn cây N-phân dùng danh sách có N mối liên kết để quản lý N địa chỉ nút con.Cấu trúc dữ liệu của cây N-phân tương tự cấu trúc dữ liệu đa liên kết.const int N = 100;typedef struct NTNode{ T Key;NTNode * SubNode[N];}NTOneNode;typedef struct NTOneNode * NTType;Để quản lý cây, chỉ cần quản lý địa chỉ nút gốc NTType NTree; 102. Cây nhị phân (Binary Tree)2.1. Định nghĩaCây nhị phân là cây có bậc bằng 2 (bậc của nút tối đa bằng 2) [...]... NULL BinTType BinTreeInitialize(BinTType & BTree) { BTree = NULL return (BTree ); } 2 NỘI DUNG CHƯƠNG 5 1. Khái niệm cây – Biểu diễn cây 2. Cây nhị phân (Binary Tree) 1. Định nghĩa 2. Biểu diễn và các thao tác 3. Cây nhị phân tìm kiếm (Binary Searching Tree) 3. Cây cân bằng (Balanced Tree) 1. Định nghĩa – Cấu trúc dữ liệu 2. Các thao tác trên cây cân bằng BÀI TẬP 12 2. Cây nhị phân (Binary Tree) 2.2.... BTree) { if (BTree == NULL) return (0); int HTL = BinTreeHeight(BTree -& gt; BinTLeft); int HTR = BinTreeHeight(BTree -& gt; BinTRight); if (HTL > HTR) return (HTL +1) return (HTR +1); } 37 3. Cây cân bằng (Balanced Tree) 3.1. Định nghĩa – Cấu trúc dữ liệu (tt)  Để ghi nhận mức độ cân bằng tại mỗi nút gốc cây con, dùng thêm thành phần Bal trong cấu trúc dữ liệu của mỗi nút. typedef struct BALNode { T... kết để quản lý N địa chỉ nút con.  Cấu trúc dữ liệu của cây N-phân tương tự cấu trúc dữ liệu đa liên kết. const int N = 100; typedef struct NTNode { T Key; NTNode * SubNode[N]; }NTOneNode; typedef struct NTOneNode * NTType; Để quản lý cây, chỉ cần quản lý địa chỉ nút gốc NTType NTree; 13 2. Cây nhị phân (Binary Tree) 2.2. a. Khởi tạo cây nhị phân Khởi tạo cây nhịn phân: cho con trỏ quản lý địa... NULL) { BTnode-> BinTLeft = NULL; BTnode-> BinTRight = NULL; BTnode-> Key = NewData; } return (BTnode); } 42 BÀI TẬP Bài tập trang 239, 240, 241 giáo trình Cấu trúc dữ liệu 34 2. Cây nhị phân (Binary Tree) 2.3.2.c. Loại bỏ 1 nút trên cây 31 2. Cây nhị phân (Binary Tree) 2.3.2.b. Thêm vào một nút trên cây nhị phân tìm kiếm  Giả sử thêm vào 1 nút có thành phần dữ liệu là NewData vào cây nhị... BTTree) { if (BTTree == NULL) return; BinTreeLRootRTraveling(BTTree->BinTLeft); Process (BTTree->Key); BinTreeLRootRTraveling(BTTree->BinTRight); return; } 35 2. Cây nhị phân (Binary Tree) 2.3.2.d. Hủy toàn bộ cây Thao tác chỉ đơn giản là việc thực hiện nhiều lần thao tác hủy một nút trên cây nhị phân tìm kiếm cho đến khi cây trở thành rỗng. Hàm thực hiện việc hủy tất cả các nút trong cây. .. B3: LRootR(BinTree->BinTLeft) B4: Process (CurrNode->Key) B5: LRootR(BinTree->BinTRight) BKT: Kết thúc 40 3. Cây cân bằng (Balanced Tree) 3.2.a Thêm 1 nút vào cây cân bằng 32 2. Cây nhị phân (Binary Tree) 2.3.2.b. Thêm vào một nút trên cây nhị phân tìm kiếm (tt) B1: NewNode = BinTreeCreateNode(NewData) B2: IF(NewNode == NULL) Thực hiện BKT B3: IF (BSTree == NULL) B3.1: BSTree = NewNode B3.2:... CurrNode -& gt;BSTLeft; else CurrNode = CurrNode -& gt;BSTRight; } return (CurrNode); } 23 2. Cây nhị phân (Binary Tree) 2.2. e. Tính chiều cao của cây B1: IF (BinTree == NULL) B1.1: TH = 0 B1.2: Thực hiện BKT B2: THL = TH(BinTree->BinTLeft) B3: THR = TH(BinTree->BinTRight) B4: IF(THL > THR) TH = THL + 1 B5: ELSE TH = THR + 1 BKT: Kết thúc int BinTreeHeight (BinTType BTree) { if (BTree ==... NULL) Rnode = Rnode->BinTRight; Rnode->BinTRight = NewNode; } return (NewNode); } 39 3. Cây cân bằng (Balanced Tree) 3.2. Các thao tác trên cây cân bằng Các thao tác trên cây cân bằng áp dụng cho cây nhị phân tìm kiếm cân bằng tương đối. 3.2.a Thêm 1 nút vào cây cân bằng 3.2.b. Hủy một nút khỏi cây cân bằng 28 2. Cây nhị phân (Binary Tree) 2.3. Cây nhị phân tìm kiếm (Binary Searching Tree) 2.3.2.... (tt) Các thao tác trên cây nhị phân bao gồm: a. Khởi tạo cây nhị phân b. Tạo mới 1 nút c. Thêm 1 nút vào cây nhị phân d. Duyệt qua các nút trên cây nhị phân e. Tính chiều cao của cây f. Tính số nút của cây g. Hủy 1 nút trên cây nhị phân 21 2. Cây nhị phân (Binary Tree) 2.2. d. Duyệt qua các nút trên cây nhị phân – (Left-Root-Right) Thuật toán Hàm duyệt đệ quy: LRootR B1: CurrNode = BinTree B2: IF (CurrNode... trên cây nhị phân tìm kiếm 2.3.2.a. Tìm kiếm trên cây 2.3.2.b. Thêm vào một nút trên cây 2.3.2.c. Loại bỏ 1 nút trên cây 2.3.2.d. Hủy toàn bộ cây 9 1.Khái niệm cây – Biểu diễn cây (tt) 1.3. Biểu diễn cây  Dùng đồ thị, Dùng giản đồ tập hợp, Sử dụng dạng phân cấp chỉ số BIỂU DIỄN CÂY TRONG BỘ NHỚ MÁY TÍNH  Để biểu diễn cây trong bộ nhớ máy tính dùng danh sách liên kết.  Để biểu diễn cây N-phân . để quản lý địa chỉ 2 nút con (cây con trái và cây con phải). Như vậy cấu trúc dữ liệu của cây nhị phân tương tự cấu trúc dữ liệu của danh sách liên kết. 1Môn: CẤU TRÚC DỮ LIỆUChương 5: CÂY (TREE) 2NỘI DUNG CHƯƠNG 51. Khái niệm cây – Biểu diễn cây2 . Cây nhị phân (Binary Tree) 1. Định nghĩa2.

Ngày đăng: 21/08/2012, 14:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan