Bài giảng Cấu trúc dữ liệu và giải thuật: Tree structure do TS. Ngô Hữu Dũng biên soạn gồm các nội dung chính như: Khái niệm, đặc điểm cây nhị phân tìm kiếm, định nghĩa kiểu dữ liệu, cấu trúc chương trình,...Mời các bạn cùng tham khảo!
INDUSTRIAL UNIVERSITY OF HO CHI MINH CITY Data structures and algorithms Tree structure Nội dung Khái niệm Đặc điểm Hình dạng Định nghĩa kiểu liệu Các lưu ý cài đặt Các thao tác Khái niệm 2 1 0 Bậc nút: số nút Nút gốc: nút khơng có nút cha Nút lá: nút có bậc Nút nhánh: nút có bậc khác gốc Khái niệm Mức Mức Mức Mức Độ dài đường từ gốc đến nút x: số nhánh cần qua kể từ gốc đến x Độ cao cây: Độ dài đường từ gốc đến nút mức thấp Đặc điểm nhị phân tìm kiếm Là nhị phân Giá trị node lớn giá trị tất node bên trái nhỏ giá trị tất node bên phải Nút có giá trị nhỏ nằm 40 trái Nút có giá trị lớn nằm phải 36 15 23 Định nghĩa kiểu liệu Key Giá trị TNODE Nút Trỏ trái Trỏ phải typedef struct TNODE { Key; struct TNODE *pLeft, *pRight; } *TREE; pLeft pRight Ví dụ khai báo typedef struct TNODE { int Key; struct TNODE *pLeft, *pRight; } *TREE; Các lưu ý cài đặt Bước 1: Khai báo kiểu liệu biểu diễn Bước 2: Xây dựng hàm đưa liệu (nhập) vào Bước 3: Xây dựng thao tác duyệt, tìm kiếm, huỷ, … Cấu trúc chương trình Khai báo cấu trúc Khởi tạo rỗng Xây dựng Các thao tác Hủy Các thao tác Tạo Duyệt Cho biết thông tin Tìm kiếm Xố node 10 Hàm main gọi thao tác duyệt LNR void main() { TREE t; t=NULL; Nhap(t); coutLeft) 23 Xóa 36 (Cách 2) 16 40 Cho dãy số theo thứ tự nhập từ trái sang phải: 20, 15, 35, 30, 11, 13, 17, 36, 47, 16, 38, 28, 14 Vẽ nhị phân tìm kiếm cho dãy số Cho biết kết duyệt theo thứ tự trước, sau Cho biết độ cao cây, nút lá, nút có bậc Vẽ lại sau thêm nút: 25 91 Trình bày bước vẽ lại sau xoá nút: 11 35 41 ... } *TREE; Các lưu ý cài đặt Bước 1: Khai báo kiểu liệu biểu diễn Bước 2: Xây dựng hàm đưa liệu (nhập) vào Bước 3: Xây dựng thao tác duyệt, tìm kiếm, huỷ, … Cấu trúc chương trình Khai báo cấu trúc. .. bên phải t theo thứ tự LRN In giá trị t 20 void LRN (TREE t) { if(t!=NULL) { LRN(t->pLeft); LRN(t->pRight); cout