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

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

12 496 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

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

Xem thêm: Tài liệu Cấu trúc dữ liệu nâng cao P4 pptx

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w