slike bài giảng cấu trúc dữ liệu và giải thuật - đỗ bích diệp chương 5 cấu trúc cây

30 477 0
slike bài giảng cấu trúc dữ liệu và giải thuật - đỗ bích diệp chương 5 cấu trúc 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 và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 1 Cấutrúcdữ liệuvàGiảithuật Chương IV: Cấu trúc Cây Đỗ Bích Diệp - Khoa CNTT CấutrúcCây z Nội dung 1. Các khái niệm 2. Cây tổng quát 1. ADT Cây 2. Biểudiễncâytổng quát 3. Duyệtcâytổng quát 3. Cây nhị phân 1. Định nghĩavàtínhchất 2. Duyệt cây nhị phân 3. Biểudiễn cây nhị phân 4. Ứng dụng củacấu trúc cây cho cây biểuthức Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 2 Đỗ Bích Diệp - Khoa CNTT Định nghĩaCây − Cây là mộtcấu trúc phi tuyến, thiếtlậptrênmột tậphữuhạn các “nút” – Tồntạimộtnútđặcbiệtgọilà“gốc” (root) – Giữa các nút tồntạimột quan hệ phân cấp hay gọi là quan hệ cha con – Mộtnúttrừ nút gốcchỉ có mộtcha – Mộtnútcóthể có từ 0 đếnn con Đỗ Bích Diệp - Khoa CNTT Định nghĩaCây z Định nghĩa đệ quy về Cây – Mộtnúttạo thành một cây. – Nếucón câyT 1 , T 2 , …, T n tách biệt có các nút gốclầnlượtlàr 1 , r 2 , … , r n ; r là một nút có quan hệ cha-con vớir 1 , r 2 , … , r n thì tồntạimộtcâymới T nhậnr làmgốc. r rnr2r1 T1 T2 Tn Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 3 Đỗ Bích Diệp - Khoa CNTT Ví dụ Cây Desktop My Documents My Network Places My Compute r CD Driver (D:) Window sXP (C:) Floppy(A:) My Received Files My Pic t ure s My Music Cây thư mụctrongmáytính Đỗ Bích Diệp - Khoa CNTT Ví dụ Cây Cây phân cấpchứcnăng hệ thống thông tin Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 4 Đỗ Bích Diệp - Khoa CNTT Ví dụ Cây Cây mụclụcSách Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây – Cấp (Degree) củamột nút và củacây z Cấpcủamột nút là số các con củanútđó z Cấpcủamộtcâylàcấpcaonhấtcủamột nút trên cây A JH DCB E F G I K L M N Degree 2 Degree 3 Degree 4 Degree 3 P Degree 1 Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 5 Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây – Đường đitrêncây: z Dãy các nút n 1 , n 2 , , n k trong đón i là nút cha củan i+1 ( i = 1 k-1) là đường đitừ n 1 đếnn k A JH DCB E F G I K L M N Path from A to M Length = 3 P Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây z Độ sâu hay mức (Depth – Level ) củanút – Độ dài đường đitừ gốc đếnnútđó+ 1 A JH DCB E F G I K L M N Depth 1 Depth 2 Depth 3 Depth 4 P Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 6 Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây z Độ cao (Height) củanút – Độ dài đường đi dài nhấttừ nút đó đến 1 nút lá trong cây + 1 – Chiềucaocủa cây là chiềucaocủa nút gốccủacâyđó A JH DCB E F G I K L M NP Height = 1 Height = 2 Height =3 Height =4 Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây z Tổ tiên (Ancestor): A,C, G là tổ tiên củaM z Hậuduệ (descendants): E, F, G, H, L,M …đềulàhậuduệ củaA z Anh em (siblings): E, F là mộtcặp anh em ; L, N là mộtcặp anh em A JH D CB E F G I K L M NP Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 7 Đỗ Bích Diệp - Khoa CNTT Các thuậtngữ liên quan đến cây z Rừng là mộttậphợphữuhạn các cây phân biệt, không giao nhau JH DCB E F G I K L M N Đỗ Bích Diệp - Khoa CNTT Các thao tác cơ bảntrênCây – Cácthaotáctruynhậpcây z root() : trả ra nút gốccủacây z parent( Tree T, Node p): trả ra nút cha của nút p trong cây T z children(Tree T, Node p): trả ra danh sách các nút con của nút p trong cây T z left_most_child(Tree T, Node p) : trả ra nút con cựctráicủa nút p z right_most_child(Tree T, Node p) : trả ra nút con cựcphảicủa nút p z left_sibling (Tree T, Node p) : trả ra nút anh em kề cận bên trái của nút p z right_sibling(Tree T, Node p) : trả ra nút anh em kề cận bên phảicủa nút p – Các thao tác khác z height (Tree T) z size(Tree T) z isRoot (Tree T, Node p); isLeaf (Tree T, Node p); isInternal (Tree T, Node p); Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 8 Đỗ Bích Diệp - Khoa CNTT Biểudiễn cây tổng quát – Dựatrênthamchiếu đến nút cha z Cây T có các nút được đánh số từ 1 đếnn z Cây T đượcbiểudiễnbằng một danh sách tuyếntính trong đónútthứ i sẽ chứamột thành phầnthamchiếu đến cha củanó z Nếu dùng mảng, A[i] = j nếuj làcha của nút i ; nếui là gốc thì A[i] = 0; A H D CB E G L N 1 2 3 4 56 7 89 A[9]A[8]A[7]A[6]A[5]A[4]A[3]A[2]A[1] 663321110 Đỗ Bích Diệp - Khoa CNTT Biểudiễn cây tổng quát – Dựa trên danh sách các nút con z 1 nút trong cây có một danh sách các nút con z Danh sách các nút con thường là danh sách móc nối z Trong trường hợpsử dụng danh sách móc nối, các nút đầu danh sách đượclưu trong mộtmảng Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 9 Đỗ Bích Diệp - Khoa CNTT Biểudiễn cây tổng quát – Dựa trên danh sách các nút con A H D CB E G L N 1 2 3 4 56 7 89 NULL NULL NULL 98 NULL NULL 76 5 432 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Đỗ Bích Diệp - Khoa CNTT Biểudiễn cây tổng quát – Thông qua mộtcâycấp2 z Vớimột nút trong cây , chỉ quan tâm tới 2 quan hệ – Quan hệ 1-1 giữa nút đó và nút con cựctráicủanó(con cả) – Quan hệ 1-1 giữa nút đóvànútemkế cận bên phảicủanó z Dựa vào nhận định này, ngườitabiểudiễn đượcmộtcây tổng quát dướidạng một cây nhị phân gọilàcây nhị phân tương đương (equivalent binary tree) z Quy cách của 1 nút trên cây nhị phân tương đương sẽ như sau RSIBLINGINFOLCHILD Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 10 Đỗ Bích Diệp - Khoa CNTT Biểudiễn cây tổng quát z Ví dụ: – Cây tổng quát – Cây nhị phân tương đương A H DCB E F G I K A B E F C G D H I K Đỗ Bích Diệp - Khoa CNTT Duyệt cây theo thứ tự trước z Duyệtcâylàthăm các nút trên cây theo mộtthứ tự nhất định, mỗi nút thăm1 lần z Khi duyệt theo thứ tự trước, một nút sẽ đượcthămtrướccáchậuduệ củanó z Ứng dụng: In ra các mụclụccủa mộttàiliệu I. A 1. B 3.D2. C 2.1 G 2.2 H1.1 E 1.2 F 2.3 I 1 3 5 4 678 9 Algorithm preOrder(v) visit(v) for each child w of v preOrder(w) 2 [...]... Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 23 Cấu trúc dữ liệu và Giải thuật Biểu diễn cây nhị phân T A A B D B C E F D C E F K K Đỗ Bích Diệp - Khoa CNTT Biểu diễn cây nhị phân struct Tnode{ int info; struct Tnode * lptr; struct Tnode * rptr; }; typedef struct Tnode TREENODE; typedef TREENODE *TREENODEPTR; Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 24 Cấu trúc dữ liệu và Giải thuật. .. 5 DDR.java 10K 7 Stocks.java 25K 8 Robot.java 20K Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 17 Cấu trúc dữ liệu và Giải thuật Cây nhị phân ( Binary Tree) – Là cây mà mọi nút trên cây chỉ có tối đa là 2 con Cây con của một nút cũng cần phải được phân biệt rõ ràng thành cây con trái (left subtree) và cây con phải (right subtree) A right-subtree left-subtree B C D F E G Đỗ Bích Diệp -. .. leftvalue + rightvalue; '-' : Result = leftvalue - rightvalue; '*' : Result = leftvalue * rightvalue; '/' : Result = leftvalue / rightvalue; ‘^' : Result = leftvalue ^ rightvalue; ‘teta' : Result = -( rightvalue); end case; END; return Result; End Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 29 Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 30 ... thứ tự sau HDIJEBFKGCA B D H C E I G F J K Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 25 Cấu trúc dữ liệu và Giải thuật Duyệt cây nhị phân theo thứ tự trước void PREORDER(TREENODEPTR tree) { if (tree != NULL) { printf(“%3d”, tree->info; PREORDER(tree->lptr); PREORDER(tree->rptr); } } Đỗ Bích Diệp - Khoa CNTT Duyệt cây nhị phân – Ví dụ 2: Cho cây nhị phân biểu diễn biểu thức số học sau,... Diệp - Khoa CNTT Ví dụ cây nhị phân – Cây biểu thức số học với các phép toán 2 ngôi + - / * x 3 x z y Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 18 Cấu trúc dữ liệu và Giải thuật Ví dụ cây nhị phân – Cây quyết định Want a fast meal? No Yes How about coffee? On expense account? Yes No Yes Starbucks Spike’s No Al Forno Café Paragon Đỗ Bích Diệp - Khoa CNTT Ví dụ cây nhị phân – Kết quả... H E B H G F Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 19 Cấu trúc dữ liệu và Giải thuật Các dạng đặc biệt của cây nhị phân Cây suy biến (degenerate binary tree) – Mỗi nút trong của cây có đúng 1 nút con A A C A A C C F F G (a) C F F G G (b) G (c) (d) Đỗ Bích Diệp - Khoa CNTT Các dạng đặc biệt của cây nhị phân Cây nhị phân đầy đủ (full binary tree) – A Mỗi nút trong của cây đều có đầy... được đánh số i Đỗ Bích Diệp - Khoa CNTT Biểu diễn cây nhị phân – Ví dụ 1 2 4 8 – I B D 9 A C 3 5 E 6 F 7 G K Cây cho ở trên được lưu trữ trên vector lưu trữ V như sau A B C D E F G I K V[1] V[2] V[3] V[4] V [5] V[6] V[7] V[8] V[9] Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 22 Cấu trúc dữ liệu và Giải thuật Biểu diễn cây nhị phân Cách lưu trữ kế tiếp phù hợp để lưu trữ cây nhị phân gần... giữa và sau Nhận xét về các dãy thu được + - x ^ / * 4 y y 2 z Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 26 Cấu trúc dữ liệu và Giải thuật Cây biểu thức – Bài toán 1: Dựng cây biểu diễn biểu thức số học: Cho một biểu thức số học dưới dạng hậu tố, dựng cây biểu diễn biểu thức số học đó Ví dụ: Cho biểu thức x 4 y * - y z / 2 ^ + Dựng được cây biểu diễn biểu thức này như sau + - x ^... F E A Cây nhị phân gần đầy – Ở mức cuối cùng không có đầy đủ các nút B D H Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN C E F G I J K Đỗ Bích Diệp - Khoa CNTT 20 Cấu trúc dữ liệu và Giải thuật Các dạng đặc biệt của cây nhị phân Cây nhị phân hoàn chỉnh – – Là cây nhị phân gần đầy Tất cả các nút ở mức cuối cùng đều lệch về bên trái nhất có thể A B C D H F E L I J G K Cây nhị phân cân đối Cây con trái và cây con... với nút nhánh là teta thì toán hạng của nó là con phải của nó Đỗ Bích Diệp - Khoa CNTT Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 28 Cấu trúc dữ liệu và Giải thuật Tính giá trị của biểu thức số học – Ví dụ + * teta 20 ^ 9 2 5 4 Đỗ Bích Diệp - Khoa CNTT Tính giá trị của biểu thức Giải thuật tính giá trị biểu thức biểu diễn bằng cấu trúc cây Function COMPUTE_EXPRESSION(T) Begin IF IsLeaf(T) THEN Result := VAL(INFO(T)); . Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 1 Cấutrúcdữ liệuvàGiảithuật Chương IV: Cấu trúc Cây Đỗ Bích Diệp - Khoa CNTT CấutrúcCây z Nội dung 1. Các khái niệm 2. Cây. Music Cây thư mụctrongmáytính Đỗ Bích Diệp - Khoa CNTT Ví dụ Cây Cây phân cấpchứcnăng hệ thống thông tin Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 4 Đỗ Bích Diệp - Khoa. Bích Diệp - Khoa CNTT Ví dụ cây nhị phân – Cây biểuthứcsố họcvới các phép toán 2 ngôi + - / x z x * 3 y Cấu trúc dữ liệu và Giải thuật Đỗ Bích Diệp - Khoa CNTT - ĐHBKHN 19 Đỗ Bích Diệp - Khoa

Ngày đăng: 24/10/2014, 15:02

Từ khóa liên quan

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

Tài liệu liên quan