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

71 325 0
Cấu trúc cây, cấu trúc dữ liệu

Đ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

1 Cấu trúc cây Cấu trúc cây Trees Trees PGS. TS. Trần Cao Đệ PGS. TS. Trần Cao Đệ Năm 2013 Năm 2013 2 Thuật ngữ cơ bản  Cây: là một tập hợp các phần tử gọi là nút (nodes): Cây: là một tập hợp các phần tử gọi là nút (nodes):  Có một nút được phân biệt gọi là nút gốc (root). Có một nút được phân biệt gọi là nút gốc (root).  Quan hệ Quan hệ cha - con cha - con (parenthood): xác định hệ thống cấu (parenthood): xác định hệ thống cấu trúc phân cấp trên các nút. trúc phân cấp trên các nút.  Mỗi nút, trừ nút gốc, có duy nhất một nút cha. Mỗi nút, trừ nút gốc, có duy nhất một nút cha.  Một nút có thể có nhiều nút con hoặc không có nút con Một nút có thể có nhiều nút con hoặc không có nút con nào. nào.  Mỗi nút biểu diễn một phần tử trong tập hợp đang xét và Mỗi nút biểu diễn một phần tử trong tập hợp đang xét và nó có thể có một kiểu nào đó bất kỳ. nó có thể có một kiểu nào đó bất kỳ.  Biểu diễn nút bằng một kí tự, một chuỗi hoặc một số ghi Biểu diễn nút bằng một kí tự, một chuỗi hoặc một số ghi trong vòng tròn. trong vòng tròn.  Mối quan hệ cha con được biểu diễn theo qui ước nút cha Mối quan hệ cha con được biểu diễn theo qui ước nút cha ở dòng trên nút con ở dòng dưới và được nối bởi một ở dòng trên nút con ở dòng dưới và được nối bởi một đoạn thẳng. đoạn thẳng. 3 Ví dụ một cây 1 2 3 5 6 4 97 10 8 4 Định nghĩa  Một nút đơn độc là một cây. Một nút đơn độc là một cây. Nút này cũng chính là nút gốc Nút này cũng chính là nút gốc của cây. của cây.  Giả sử ta có n là một nút đơn Giả sử ta có n là một nút đơn độc và k cây T độc và k cây T 1 1 , , T , , T k k với các nút với các nút gốc tương ứng là n gốc tương ứng là n 1 1 , , n , , n k k thì có thì có thể xây dựng một cây mới bằng thể xây dựng một cây mới bằng cách cho nút n là cha của các cách cho nút n là cha của các nút n nút n 1 1 , , n , , n k k . Cây mới này có nút . Cây mới này có nút gốc là nút n và các cây T gốc là nút n và các cây T 1 1 , , T , , T k k được gọi là các cây con. được gọi là các cây con.  Tập rỗng cũng được coi là một Tập rỗng cũng được coi là một cây và gọi là cây rỗng kí hiệu cây và gọi là cây rỗng kí hiệu ∅ ∅ . . n T k n 1 T 1 n k n 2 T 2 5 Thuật ngữ  Đường đi: chuỗi các nút n 1 , , n k , trong đó n i là nút cha của nút n i+1 , với i=1 k-1  Độ dài đường đi = số nút – 1  Đường đi từ một nút đến chính nó có độ dài bằng không.  Nếu có đường đi từ nút a đến nút b thì ta nói a là tiền bối (ancestor) của b, còn b gọi là hậu duệ (descendant) của nút a.  một nút vừa là tiền bối vừa là hậu duệ của chính nó.  Tiền bối hoặc hậu duệ của một nút khác với chính nó gọi là tiền bối hoặc hậu duệ thực sự.  Nút gốc không có tiền bối thực sự. 1 2 3 5 6 4 97 10 8 6  Nút không có hậu duệ thực sự gọi là nút lá (leaf).  Nút không phải là lá ta còn gọi là nút trung gian (interior).  Cây con của một cây là một nút cùng với tất cả các hậu duệ của nó.  Chiều cao của một nút là độ Chiều cao của một nút là độ dài đường đi lớn nhất từ nút đó dài đường đi lớn nhất từ nút đó tới lá. tới lá.  Chiều cao của cây là chiều cao Chiều cao của cây là chiều cao của nút gốc. của nút gốc.  Độ sâu của một nút là độ dài Độ sâu của một nút là độ dài đường đi từ nút gốc đến nút đường đi từ nút gốc đến nút đó. đó.  Các nút có cùng một độ sâu i Các nút có cùng một độ sâu i ta gọi là các nút có cùng một ta gọi là các nút có cùng một mức i. mức i. 1 2 3 5 6 4 97 10 8 7 Thứ tự nút Thứ tự nút  Nếu ta phân biệt thứ tự các nút Nếu ta phân biệt thứ tự các nút con của cùng một nút thì cây con của cùng một nút thì cây gọi là cây có thứ tự gọi là cây có thứ tự  Thứ tự qui ước từ trái sang Thứ tự qui ước từ trái sang phải. phải.  Nếu không phân biệt rõ ràng Nếu không phân biệt rõ ràng thứ tự các nút thì ta gọi là cây thứ tự các nút thì ta gọi là cây không có thứ tự. không có thứ tự.  Các nút con cùng một nút cha Các nút con cùng một nút cha gọi là các nút anh em ruột gọi là các nút anh em ruột (siblings). (siblings).  Quan hệ "trái sang phải" của Quan hệ "trái sang phải" của các anh em ruột có thể mở rộng các anh em ruột có thể mở rộng cho hai nút bất kỳ. cho hai nút bất kỳ. A B C A C B 8 Duyệt cây  Duyệt cây là một qui tắc cho phép đi qua lần lượt tất Duyệt cây là một qui tắc cho phép đi qua lần lượt tất cả các nút của cây mỗi nút đúng một lần cả các nút của cây mỗi nút đúng một lần  Danh sách liệt kê các nút (tên nút/ giá trị) theo thứ Danh sách liệt kê các nút (tên nút/ giá trị) theo thứ tự đi qua gọi là danh sách duyệt cây. tự đi qua gọi là danh sách duyệt cây.  Ba cách duyệt cây quan trọng: Ba cách duyệt cây quan trọng:  duyệt tiền tự (preorder),  duyệt trung tự (inorder),  duyệt hậu tự (posorder). 9  Cây rỗng: Cây rỗng:  tiền tự, trung tự, hậu tự = tiền tự, trung tự, hậu tự = RỖNG. RỖNG.  Cây chỉ có một nút n: Cây chỉ có một nút n:  tiền tự, trung tự, hậu tự của tiền tự, trung tự, hậu tự của cây= n. cây= n.  T gốc n, các cây con T T gốc n, các cây con T 1 1 ,…, T ,…, T k k : :  Tiền tự(T) = n, tiền tự (T1), Tiền tự(T) = n, tiền tự (T1), …, tiền tự (Tk) …, tiền tự (Tk)  Trung tự(T) = Trung tự(T1), n, Trung tự(T) = Trung tự(T1), n, trung tự (T2), …, trung tự (Tk) trung tự (T2), …, trung tự (Tk)  Hậu tự (T) = hậu tự (T1), …, Hậu tự (T) = hậu tự (T1), …, hậu tự (Tk), n hậu tự (Tk), n T k n n 1 T 1 n k n 2 T 2 T 10 Ví dụ duyệt cây  Tiền tự Tiền tự 1, 2, 5, 6, 3, 7, 8, 9, 10, 1, 2, 5, 6, 3, 7, 8, 9, 10, 4 4  Trung tự Trung tự 5, 2, 6, 1, 8, 7, 3, 9, 10, 5, 2, 6, 1, 8, 7, 3, 9, 10, 4 4  Hậu tự Hậu tự 5, 6, 2, 8, 7, 9, 10, 3, 4, 5, 6, 2, 8, 7, 9, 10, 3, 4, 1 1 1 2 3 5 6 4 97 10 8 [...]... 4 5 6 7 8 9 10 Pare nt -1 1 1 1 2 2 3 7 3 3 data Maxnode 21 Ví dụ khác A 1 3 C B 4 D F 5 0 8 E G 6 I 2 J 9 H 7 22 Khai báo cấu trúc dữ liệu #define MAXLENGTH /* chỉ số tối đa của mảng */ #define NULL -1 typedef DataType; typedef int Node; typedef struct { /* Lưu trữ nhãn (dữ liệu) của nút trong cây */ DataType Data[MAXLENGTH]; /* Lưu trữ cha của các nút trong cây theo nguyên tắc: Cha của nút i sẽ... chương trình nhập dữ liệu vào cho cây từ bàn phím như tổng số nút trên cây; ứng với từng nút thì phải nhập nhãn của nút, cha của một nút Hiển thị danh sách duyệt cây theo các phương pháp duyệt tiền tự, trung tự, hậu tự của cây vừa nhập Hướng giải quyết: Với những yêu cầu đặt ra như trên, chúng ta cần phải thiết kế một số chương trình con sau:   Tạo cây rỗng MAKENULL_TREE(T) Nhập dữ liệu cho cây từ... trung tố a * c – b Biểu thức hậu tố a c * b 15 1 + ( a – c * d ) /( g + h ) + H ậu t ự : 1 a c d * - g h + / + Tiền tự: + 1 / - a * c d + g h / Trung tự: 1 + a – c * d / g + h 1 + a * c g h d 16 KIỂU DỮ LIỆU TRỪU TƯỢNG CÂY        Hàm PARENT(n,T) cho nút cha của nút n trên cây T Hàm LEFTMOST_CHILD(n,T) cho nút con trái nhất của nút n trên cây T, nếu n là lá thì hàm cho giá trị NULL Hàm RIGHT_SIBLING(n,T)... Biểu diễn cây bằng danh sách các con 1 1 B 5 C 6 E 7 F 9 G 8 J 10 H I D 5 6 C 7 9 4 D 5 E 6 4 B 3 3 3 F 7 G 8 2 2 2 A A J 9 H 10 4 I 10 8 11 12 35 Biểu diễn theo con trái nhất và anh em ruột phải  Các cấu trúc đã dùng để mô tả cây ở trên có một số nhược điểm: không trợ giúp phép tạo một cây lớn từ các cây nhỏ hơn, nghĩa là ta khó có thể cài đặt phép toán CREATEi  Chẳng hạn CREATE2(v,T1,T2) chúng ta phải . 1 Cấu trúc cây Cấu trúc cây Trees Trees PGS. TS. Trần Cao Đệ PGS. TS. Trần Cao Đệ Năm 2013 Năm 2013 2 Thuật. Quan hệ cha - con cha - con (parenthood): xác định hệ thống cấu (parenthood): xác định hệ thống cấu trúc phân cấp trên các nút. trúc phân cấp trên các nút.  Mỗi nút, trừ nút gốc, có duy. d * - g h + / +ậ ự Ti n t : + 1 / - a * c d + g hề ự Trung t : 1 + a – c * d / g + h ự 17 KIỂU DỮ LIỆU TRỪU TƯỢNG CÂY  Hàm Hàm PARENT(n,T) PARENT(n,T) cho nút cha của nút n trên cây T cho

Ngày đăng: 21/10/2014, 20:09

Từ khóa liên quan

Mục lục

  • Cấu trúc cây Trees

  • Thuật ngữ cơ bản

  • Ví dụ một cây

  • Định nghĩa

  • Thuật ngữ

  • PowerPoint Presentation

  • Thứ tự nút

  • Duyệt cây

  • Slide 9

  • Ví dụ duyệt cây

  • Bài tập

  • Cây có nhãn và cây biểu thức

  • Slide 13

  • Slide 14

  • cây biểu thức

  • 1 + ( a – c * d ) /( g + h )

  • KIỂU DỮ LIỆU TRỪU TƯỢNG CÂY

  • Slide 18

  • Slide 19

  • Cài đặt cây bằng mảng

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

Tài liệu liên quan