1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 10: Cây (Tree)

41 60 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 41
Dung lượng 2,86 MB

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 10: Cây (Tree) cung cấp cho người cấp cho người học các kiến thức: Cấu trúc dữ liệu phi tuyến, cây biểu diễn các tổ chức, cây biểu diễn hệ thống files, cấu trúc của một cuốn sách,.... Mời các bạn cùng tham khảo.

Bài 10 Cây - Tree Cây – Cấu trúc liệu phi tuyến (Trees - Non-linear data structures) ĐHGTVT CNTT KTVT CT Một số ví dụ sử dụng cấu trúc liệu Data structures trees Cây gia phả Data structures trees Cây biểu diễn tổ chức ĐHGTVT Đ-ĐT CNTT Mạng CNPM KHMT VT ĐKH KT CK TTBĐ Data structures trees KTVT … Cây biểu diễn hệ thống files Cây mô tả phân chia hệ thống files Data structures trees Cấu trúc sách Cây thể cấu trúc thông tin Data structures trees Cây định Bạn có gia đình riêng chưa? Khơng chấp nhận chưa Bạn có đại học khơng? có Khơng Bạn có tốt nghiệp loại giỏi khơng? có Chấp nhận Khơng chấp nhận không Không chấp nhận Cây định tuyển nhân viên Data structures trees Cây nhị phân biểu diễn biểu thức toán học Một nhị phân biểu diễn biểu thức Cây biểu diễn biểu thức ((((3+1)*3/((9-5)+2))-((3*(7-4))+6)) Giá trị kết hợp lại nút có nhãn “/” Data structures trees Cây cú pháp S  XY X  XA | a | b Y  AY | a Aa Data structures trees 10 Cây định (Decision tree) Cây kết hợp với trình định   Các nút trong: Các câu hỏi với câu trả lời yes/no Các nút ngồi: định Ví dụ: Cây định tuyển nhân viên Bạn có gia đình riêng chưa? chưa Khơng chấp nhận Bạn có đại học khơng? có Khơng Bạn có tốt nghiệp loại giỏi khơng? có Chấp nhận Không chấp nhận không Không chấp nhận Data structures trees 27 Một số định nghĩa  Cây nhị phân hoàn chỉnh: Là nhị phân mà tất nút có đủ hai nút  Cây nhị phân đầy đủ: nhị phân hoàn chỉnh tất mức Data structures trees 28 Các tính chất nhị phân hồn chỉnh Các tính chất:  e = i +  n = 2e -  h  i  h  (n - 1)/2  e  2h  h  log2 e  h  log2 (n + 1) - Ký hiệu n e i h số nút số nút số nút chiều cao Data structures trees 29 Cấu trúc liệu trừu tượng Cây nhị phân (Binary tree ADT) ADT nhị phân mở rộng ADT cây, tức là, kế thừa phương thức ADT Thêm vào phương thức:     Địa left(p) Địa right(p) int hasLeft(p) int hasRight(p) // trả lại địa nút trái // trả lại địa nút phải //Cho biết nút có trái khơng //Cho biết nút có phải khơng Data structures trees 30 Duyệt theo thứ tự - Inorder Traversal Duyệt theo thứ tự giữa:    Thăm bên trái theo thứ tự (nếu có) Thăm nút cha Thăm bên phải theo thứ tự (nếu có) Ứng dụng: vẽ nhị phân   Algorithm inOrder(v) if hasLeft (v) inOrder (left (v)) visit(v) if hasRight (v) inOrder (right (v)) x(v) = Thứ tự thăm v y(v) = độ sâu v Data structures trees 31 Bài tập: Hãy thứ tự nút phương pháp duyệt Inorder? Data structures trees 32 Thứ tự duyệt Data structures trees 33 Cấu trúc liên kết cho tổng quát Mỗi nút đối tượng, lưu trữ:    Phần tử (Element) Nút cha (Parent node) Lưu dãy địa nút  B Mỗi nút thể vị trí ADT  A B D A C  D F F  E C Data structures trees  E 34 Cấu trúc liệu TreeNode tổng quát  Thuộc tính  Object elem  TreeNode *Parent  ListChild  Phương thức        TreeNode *getParent() void setParent(TreeNode*) TreeNode *getChild(int i) void insertChild(Object elem) List getChild() //tra lai thuoc tinh child Object getElem() void setElem(Object o) Data structures trees 35 Cấu trúc tổng quát Thuộc tính  TreeNode * root Phương thức            Các phương thức truy cập:  TreeNode *root() int size() int isEmpty() int isInternal(TreeNode*) int isExternal(TreeNode*) int isRoot(TreeNode*) void preOrder(TreeNode*) void inOrder(TreeNode*) void postOrder(TreeNode*) void insert(TreeNode*parent, element) void remove(TreeNode*); Data structures trees 36 Cấu trúc liên kết cho nhị phân Một nút đối tượng, lưu trữ:      Phần tử (Element) Nút cha (Parent node) Nút trái Nút phải B Mỗi nút thể ví trí ADT  B A A D C  D  E Data structures trees  C   E 37 Cấu trúc BTreeNode biểu diễn nhị phân   Thuộc tính Phương thức  BTreeNode *Parent()  Object elem  BTreeNode *Parent  BTreeNode *Left  BTreeNode *Right  BTreeNode *Left()  BTreeNode *Right()  void setLeft(BTreeNode *)  void setRight(BTreeNode *)  void setParent(BTreeNode *)  int hasLeft()  int hasRight()  Object getElem()  void setElem(Object o) Data structures trees 38 Cấu trúc liệu nhị phân Thuộc tính  BTreeNode * root Phương thức            Các phương thức truy cập:  BTreeNode *root() int size() int isEmpty() int isInternal(BTreeNode *) int isExternal(BTreeNode *) int isRoot(BTreeNode *) void preOrder(BTreeNode *) void inOrder(BTreeNode *) void postOrder(BTreeNode *) void insert(BTreeNode *parent, int leftRight, element) void remove(BTreeNode *); Data structures trees 39 Bài tập Xây dựng lớp biểu diễn Cây tổng quát Cài đặt thuật toán thêm node vào Cài đặt thuật toán duyệt Xây dựng lớp ứng dụng tạo cây, duyệt in phần tử lên hình Data structures trees 40 Bài tập Xây dựng lớp biểu diễn Cây nhị phân Cài đặt thuật toán duyệt Xây dựng lớp ứng dụng tạo cây, duyệt cây, tìm kiếm phần tử Data structures trees 41 .. .Cây – Cấu trúc liệu phi tuyến (Trees - Non-linear data structures) ĐHGTVT CNTT KTVT CT Một số ví dụ sử dụng cấu trúc liệu Data structures trees Cây gia phả Data structures trees Cây biểu... ĐHGTVT ? ?-? ?T CNTT Mạng CNPM KHMT VT ĐKH KT CK TTBĐ Data structures trees KTVT … Cây biểu diễn hệ thống files Cây mô tả phân chia hệ thống files Data structures trees Cấu trúc sách Cây thể cấu trúc. .. trees CT 11 Cây tổng quát Cây gì? Cây tập nút với quan hệ cha-con (parent-child) nút Trong có nút gọi gốc khơng có cha Trong khoa học máy tính, một mơ hình trừu tượng cấu trúc phân cấp Các ứng dụng:

Ngày đăng: 14/10/2020, 22:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN