Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
665,34 KB
Nội dung
Chương : CÂY NHỊ PHÂN Giảng viên : Nguyễn Minh Thành Email : thanhnm.itc@itc.edu.vn Nội Dung Cấu Trúc Cây Khái việm ví dụ Định nghĩa Các tính chất Các thuật ngữ liên quan II Cây Nhị Phân Định nghĩa Cách thức lưu trữ III Cây Nhị Phân Tìm Kiếm Ý nghĩa Định nghĩa Ví dụ Cài đặt I I Cấu Trúc Cây Khái việm ví dụ Định nghĩa Các tính chất Các thuật ngữ liên quan I.1 Khái Niệm Ví Dụ Ví dụ 1: toán đưa thư Trên giới có ~ 10 tỉ người Thành, khoa CNTT, CĐ CNTT, TpHCM, Việt Nam Cách tìm “Thành” nhanh ? Sử dụng mảng ? Sứ dụng danh sách liên kết (linked list) ? I.1 Khái Niệm Ví Dụ Ví dụ 1: toán đưa thư I.1 Khái Niệm Ví Dụ Cây cấu trúc liệu quan trọng để biểu diễn lưu trữ liệu nhớ mang tính “kế thừa” Tính kế thừa : Các node phải liên quan đến node cha Các mang tính kế thừa : Cây gia phả Cây phân cấp loài (sinh vật) I.2 Định Nghĩa Một (Tree) Một tập hợp phần tử, gọi node p1,p2,…,pN Nếu N=0, gọi rỗng (NULL) Nếu N>0 : Tồn node pk gọi gốc Các nút lại chia thành m tập không giao : T1, T2, … TM Mỗi Ti I.2 Định Nghĩa I.2 Định Nghĩa I.2 Định Nghĩa 10 III.3 Cài đặt 41 Các thao tác tìm thông tin Số node có III.3 Cài đặt 42 Các thao tác tìm thông tin Tính độ cao III.3 Cài đặt 43 Các thao tác tìm thông tin Số node mức k III.3 Cài đặt Các thao tác tìm thông tin Số node có phải Số node có trái Số node có Số node Độ dài đường từ gốc đến x 44 Sinh viên tự làm III.3 Cài đặt 45 Các thao tác tìm thông tin Số node có phải III.3 Cài đặt 46 Các thao tác tìm kiếm Tìm x Tìm Tim phải Tìm max Tìm max trái III.3 Cài đặt 47 Các thao tác tìm kiếm Tìm x : trả trỏ trỏ đến vùng nhớ chứa x III.3 Cài đặt 48 Các thao tác tìm kiếm Tìm : phần tử nhỏ phần tử trái III.3 Cài đặt Các thao tác tìm kiếm Tìm phải Tìm max Tìm max trái Sinh viên tự làm 49 III.3 Cài đặt 50 Thao tác Xoá node Các node bị xoá : Node Node có Node có III.3 Cài đặt 51 Thao tác Xoá node Xoá node Xoá vùng nhớ node Con trỏ node cha trỏ đến NULL Xoá node có Đổi vị trí node cần huỷ node Xoá node cần huỷ Xoá node có Tìm phần tử mạng cho node cần xoá (phần tử phải bên trái, trái bên phải) Đổi key node mạng với cần xoá Xoá node mạng III.3 Cài đặt 52 Thao tác Xoá node III.3 Cài đặt 53 Thao tác Xoá node III.3 Cài đặt Thao tác Huỷ toàn Sinh viên tự làm 54 Hỏi Đáp 55 [...]... mạnh của mảng và danh sách kết trong việc biểu lưu trữ cây 22 III.3 Cài đặt Có 2 cách tổ chức cây nhị phân : Lưu trữ bằng mảng Lưu trữ bằng con trỏ cấu trúc Sử dụng con trỏ cấu trúc (DSLK) là tối ưu hơn 23 III.3 Cài đặt Định nghĩa dữ liệu Typedef struct TNODE { Data Key; Struct TNODE pLeft, pRight; } *TREE; 24 III.3 Cài đặt Các lưu ý khi cài đặt Bước 1 : Khai báo kiểu dữ liệu biểu diễn... kiểu dữ liệu biểu diễn cây Bước 2 : Xây dựng hàm đưa dữ liệu (nhập) vào cây Bước 3 : Xây dựng các thao tác duyệt, tìm kiếm, huỷ… Các lưu ý khác Trước khi tạo node mới phải xin cấp phát vùng nhớ Trước khi tạo cây mới phải khởi tạo cây rỗng Trước khi kết thúc chương trình phải huỷ cây (giải phóng bộ nhớ) 25 III.3 Cài đặt 26 Cấu trúc chương trình III.3 Cài đặt Thao tác Khởi tạo cây rỗng... (In-Order) : LNR Duyệt gốc sau (Post-Order) : LRN III.3 Cài đặt Thao tác Duyệt Cây Thứ tự duyệt NLR 7 3 1 6 4 36 15 40 31 III.3 Cài đặt Thao tác Duyệt Cây Thứ tự duyệt LNR 1 3 4 6 7 15 36 40 32 III.3 Cài đặt Thao tác Duyệt Cây Thứ tự duyệt LRN 1 4 6 3 15 40 36 7 33 III.3 Cài đặt 34 Thao tác Duyệt Cây Thứ tự duyệt NLR void NLR(TREE T) { if (T==NULL) return; CoutpLeft);... và node cha Cây con Trong cây T có bao nhiêu cây con ? I .4 Các Thuật Ngữ Liên Quan Bậc của cây : là bậc lớn nhất của các node trong cây Bậc () = max { bậc(pi) / pi } Tìm bậc của cây T ? Đường đi (path) giữa node pi và pj : là dảy các nút liên tiếp từ pi đến pj sao cho giữa 2 node kề nhau đều có nhánh Độ dài đường đi từ node pi và pj : là số nhánh cần đi qua từ pi đến pj 13 I .4. .. pi và pj : là số nhánh cần đi qua từ pi đến pj 13 I .4 Các Thuật Ngữ Liên Quan Mức (level) Mức (p)=0 nếu p là gốc Mức (p) = mức (cha(p)) +1 nếu p không phải gốc Chiều cao của cây (hT): đường đi dài nhất từ node gốc đến node lá hT = max { path (gốc, pi) / pi là node lá } Tính chiều cao của cây T trong ví dụ trên 14 I .4 Các Thuật Ngữ Liên Quan Mức (level) Mức (p)=0 nếu p là gốc Mức...I.3 Các Tính Chất Của Cây Nút gốc không có nút cha Mỗi nút khác chỉ có 1 nút cha Mỗi nút có thể có nhiều nút con Không có chu trình 11 I .4 Các Thuật Ngữ Liên Quan 12 Node : là 1 phần tử trong cây Mỗi node chứa 1 dữ liệu bất kỳ Nhánh : là đoạn nối giữa 2 nút Node cha Node con Nút anh em : là những node có cùng nút cha Bậc của 1 node pi : là số node con của pi Tìm... 2 cách tổ chức cây nhị phân : Lưu trữ bằng mảng Lưu trữ bằng con trỏ cấu trúc Chi tiết ở phần Cây Nhị Phân Tìm Kiếm 19 III Cây Nhị Phân Tìm Kiếm 1 2 3 20 Định nghĩa Ý nghĩa Cài đặt III.1 Định Nghĩa Cây nhị phân tìm kiếm Là một cây nhị phân Giá trị của một node bất kỳ luôn lớn hơn giá trị của tất cả các node bên trái và nhỏ hơn giá trị tất cả các node bên phải Giá trị nhỏ nhất nằm ở node ... mảng Lưu trữ trỏ cấu trúc Sử dụng trỏ cấu trúc (DSLK) tối ưu 23 III.3 Cài đặt Định nghĩa liệu Typedef struct TNODE { Data Key; Struct TNODE pLeft, pRight; } *TREE; 24 III.3 Cài đặt Các... Cấu Trúc Cây Khái việm ví dụ Định nghĩa Các tính chất Các thuật ngữ liên quan II Cây Nhị Phân Định nghĩa Cách thức lưu trữ III Cây Nhị Phân Tìm Kiếm Ý nghĩa Định nghĩa Ví dụ Cài đặt I I Cấu Trúc. .. phát vùng nhớ Trước tạo phải khởi tạo rỗng Trước kết thúc chương trình phải huỷ (giải phóng nhớ) 25 III.3 Cài đặt 26 Cấu trúc chương trình III.3 Cài đặt Thao tác Khởi tạo rỗng void BSTCreate(TREE