Tài liệu Cấu trúc dữ liệu nâng cao P4 pptx

12 496 0
Tài liệu Cấu trúc dữ liệu nâng cao P4 pptx

Đ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 Bài 4:CÂY, CÂY NHỊ PHÂN, CÂY NHỊ PHÂN TÌM KIẾM 1. Cấu trúc cây 1.1. Định nghĩa 1: Cây là một tập hợp T các phần tử (nút trên cây) trong đó có 1 nút đặc biệt T0 được gọi là gốc, các nút còn khác được chia thành những tập rời nhau T1, T2 , . , Tn theo quan hệ phân cấp trong đó Ti cũng là một cây. Nút ở cấp i sẽ quản lý một số nút ở cấp i+1. Quan hệ này người ta còn gọi là quan hệ cha-con. 1.2. Một số khái niệm cơ bản - Bậc của một nút: là số cây con của nút đó . - Bậc của một cây: là bậc lớn nhất của các nút trong cây. Cây có bậc n thì gọi là cây n-phân. - Nút gốc: nút không có nút cha. - Nút lá: nút có bậc bằng 0 . - Nút nhánh: nút có bậc khác 0 và không phải là gốc . - Mức của một nút: Mức (T0 ) = 1. Gọi T1, T2, T3, . , Tn là các cây con của T0 Mức (T1) = Mức (T2) = . = Mức (Tn) = Mức (T0) + 1. - Độ dài đường đi từ gốc đến nút x: là số nhánh cần đi qua kể từ gốc đến x. - Chiều cao h của cây: mức lớn nhất của các nút lá. 1.3. M ột số ví dụ về đối tượng các cấu trúc dạng cây - Sơ đồ tổ chức của một doanh nghiệp - Sơ đồ tổ chức cây thư mục 2 2. C 2.1 Đ dướ i CÂY NHỊ P Định ngh Cây nhị p Cây nhị i đây cho ta PHÂN hĩa phân là cây phân có th a hình ảnh y mà mỗi nú hể ứng dụn h của một b 3 út có tối đa ng trong nh biểu thức to a 2 cây con hiều bài toá oán học: n án thông dụụng. Ví dụụ 4 2.2. Một số tính chất của cây nhị phân: - Số nút ở mức I ≤ 2 I-1 . - Số nút ở mức lá ≤ 2 h-1 , với h là chiều cao của cây. - Chiều cao của cây h ≥ log 2 N (N - số nút trên trong cây). 2.3. Biểu diễn cây nhị phân T Cây nhị phân là một cấu trúc bao gồm các phần tử (nút) được kết nối với nhau theo quan hệ “cha-con” với mỗi cha có tối đa 2 con. Để biểu diễn cây nhị phân ta chọn phương pháp cấp phát liên kết. Ứng với một nút, ta dùng một biến động lưu trữ các thông tin: + Thông tin lưu trữ tại nút. + Địa chỉ nút gốc của cây con trái trong bộ nhớ. + Địa ch ỉ nút gốc của cây con phải trong bộ nhớ. Khai báo như sau: typedef struct tagTNODE { Data Key;//Data là kiểu dữ liệu ứng với thông tin lưu tại nút struct tagNODE *pLeft, *pRight; 5 }TNODE; typedef TNODE *TREE; 2.4. Các thao tác trên cây nhị phân Thăm các nút trên cây theo thứ tự trước (Node-Left-Right) void NLR(TREE Root) { if (Root != NULL) { <Xử lý Root>; //Xử lý tương ứng theo nhu cầu NLR(Root->pLeft); NLR(Root->pRight); } } Thăm các nút trên cây theo thứ tự giữa (Left- Node-Right) void LNR(TREE Root) { if (Root != NULL) { LNR(Root->Left); <Xử lý Root>; //Xử lý tương ứng theo nhu cầu LNR(Root->Right); } } Thăm các nút trên cây theo thứ tự sau (Left-Right-Node) void LRN(TREE Root) { } Ứn g Ứng (3 + if (Root { LRN(R o LRN(Ro <Xử lý R } g dụng phư g dụng tính 1)×3/(9 – != NULL) oot->Left); oot->Right Root>; ơng pháp n h toán giá tr 5 + 2) – (3 ) ; t); //Xử lý t ư này trong v rị của biểu 3×(7 – 4) + 6 ương ứng th việc tính tổ u thức. + 6) = –13 heo nhu cầ ổng kích th ầu hước của thhư mục. 2.5. có t h nữa, phâ n sẽ bi sau: VD: Cây 2.6. cha c Biểu diễ Nhược đ hể rất khác việc xây d n nhiều. Vì vậy, n iến đổi cây Ta có th - Giữ n ú - Các nú Giả sử có nhị phân t Một cách Đôi khi, con. Khi đ n cây tổn điểm của c nhau ⇒ v dựng các th nếu không y tổng quát hể biến đổi út con trái n út con còn l cây tổng q tương ứng h biểu diễ trên cây n ó, cấu trúc ng quát b ác cấu trúc việc biểu di hao tác trên g quá cần th t thành cây một cây b nhất làm co lại biển đổ quát như h sẽ như sa u ễn cây nh nhị phân, n c cây nhị ph 7 bằng cây c cây tổng iễn gặp nh n cây tổng hiết phải sử y nhị phân. ất kỳ thàn h on trái. ổi thành nú ình sau: u: hị phân k người ta qu hân có thể nhị phân quát là bậc hiều khó kh quát phức ử dụng cây h một cây n út con phải khác an tâm đế n định nghĩa n c của các n hăn và lãng c tạp hơn tr y tổng quát nhị phân th i. n cả quan h a lại như s nút trên cây g phí. Hơn rên cây nhị t, người ta heo qui tắc hệ chiều au: y ị c type { Dat a struc struc struc }TN type 3. C 3.1. khó a nhỏ ớ hướ n phí t def struct t aType K ct tagTNod ct tagTNod ct tagTNod NODE; def TNO D CÂY NHỊ P Định ngh Cây nhị a của nút đ hơn khóa c ới đây là mộ Nhờ ràn ng. Hơn nữ tìm kiếm tr tagTNode Key; de* pPare de* pLeft de* pRigh DE *TRE PHÂN TÌM hĩa: phân tìm k đang xét lớn của tất cả c ột ví dụ về ng buộc về ữa, do cấu rung bình c ent; ; ht; EE; M KIẾM kiếm (CNP n hơn khóa các nút thu ề cây nhị ph khóa trên trúc cây v i chỉ khoảng 8 PTK) là cây a của tất cả uộc cây con hân tìm kiế CNPTK, v iệc tìm kiế g log 2 N. y nhị phân ả các nút th n phải. ếm: việc tìm kiế m trở nên n trong đó t huộc cây c ếm trở nên nhanh đán tại mỗi nút on trái và n có định ng kể. Chi t, 3.2. 3.2. 3.2. 2 X là Ví d 3.3. 3 của C thêm thao thê m Trong th Các thao 1. Thăm c 2. Tìm mộ TToán: Dễ dàn g bằng h, vớ dụ: Tìm phầ 3. Thêm m Việc thê CNPTK. T m vào một n tác tìm kiế m. hực tế, khi o tác trên các nút tr ột phần t g thấy rằng ới h là chiề ần tử 55 một phần êm một phầ Ta có thể th nút lá thì s ếm. Khi ch xét đến câ n cây rên cây tử x trong g số lần so s ều cao của n tử x vào ần tử X vào hêm vào nh sẽ dễ nhất d hấm dứt qu 9 ây nhị phân g cây sánh tối đa cây. o cây o cây phải hiều vị trí k do ta có thể uá trình tìm n chủ yếu n a phải thực bảo đảm đ khác nhau ể thực hiện m kiếm ta s người ta xé c hiện để tìm điều kiện r trên cây, n n quá trình sẽ tìm được ét CNPTK. m phần tử àng buộc nhưng nếu h tương tự c vị trí cần . 10 Hàm insert trả về giá trị –1, 0, 1 khi không đủ bộ nhớ, gặp nút cũ hay thành công: int insertNode(TREE &T, Data X) { if(T) { if(T->Key == X) return 0; //đã có if(T->Key > X) return insertNode(T->pLeft, X); else return insertNode(T->pRight, X); } T = new TNode; if(T == NULL) return -1; //thiếu bộ nhớ T->Key = X; T->pLeft =T->pRight = NULL; return 1; //thêm vào thành công } 2.4. Hủy một phần tử có khóa x Việc hủy một phần tử X ra khỏi cây phải bảo đảm điều kiện ràng buộc của CNPTK. Có 3 trường hợp khi hủy nút X có thể xảy ra: X - nút lá. X - chỉ có 1 cây con (trái hoặc phải). X có đủ cả 2 cây con Trường hợp thứ nhất: chỉ đơn giản hủy X vì nó không móc nối đến phần tử nào khác. [...]... chiều cao c cây của phức tạp trung bình O(h) với h là c rong trường hợp tốt n g nhất, CNPT có n nú sẽ có độ cao h = TK út Trong tr log2 2(n) Chi ph tìm kiếm khi đó sẽ tương đươ tìm kiếm nhị phâ trên hí m ẽ ơng ân mảng có thứ tự ự Tuy nhiê trong tr ên, rường hợp xấu nhất, cây có thể bị suy biế thành 1 ể ến LK ó tác c ần DSL Lúc đó các thao t trên sẽ có độ phức tạp O(n) Vì vậy cầ có cải tiến cấu trúc . h là chiều cao của cây. - Chiều cao của cây h ≥ log 2 N (N - số nút trên trong cây). 2.3. Biểu diễn cây nhị phân T Cây nhị phân là một cấu trúc bao gồm. trái n út con còn l cây tổng q tương ứng h biểu diễ trên cây n ó, cấu trúc ng quát b ác cấu trúc việc biểu di hao tác trên g quá cần th t thành cây một cây

Ngày đăng: 12/12/2013, 09:16

Từ khóa liên quan

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

Tài liệu liên quan