Bài giảng cấu trúc dữ liệu và giải thuật chương 4 GV nguyễn minh thành

55 315 1
Bài giảng cấu trúc dữ liệu và giải thuật  chương 4   GV  nguyễn minh thành

Đ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

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

Ngày đăng: 03/12/2015, 18:23

Từ khóa liên quan

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

Tài liệu liên quan