Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 103 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
103
Dung lượng
6,17 MB
Nội dung
Chuong CAY Trong chuang chiing ta se nghien curu mo hinh du lieu cay (tree) Cay la mot cau true phan cap tren mot tap hop nao cac doi tugng Mot vi du quen thupc ve cay, la cay thu muc hoac muc luc cua cuon sach cung la mot cay Cay dugc sir dung rong rai rat nhieu van de khac Chang han no dugc ap dung de to chuc thong tin cac he co so du lieu, de mo ta cau true cii phap ciia cac chuong trinh nguon xay dung cac chuong trinh djeh Rat nhieu bai toan ma ta gap cac Imh vuc khac dugc quy ve vice thuc hien cac phep toan tren cay Trong chuong chiing ta se trinh bay djnh nghTa, cac khai niem co ban ve cay Chung ta cung se xet cac phuong phap cai dat cay va thuc hien cac phep toan co ban tren cay Sau ta nghien emr ky mot so dang cay dac biet la cay nhj phan tim kiem va cay can bang 4.1 CAY VA CAC KHAI NIEM C O BAN 4.1.1 Djnh nghTa D jn h nghTa I : Mot cay la tap hgp huu h ^ cac nut co mgt niit dac biet ggi la goc (root) Giua cac nut co moi quan hp phan cap ggi la quan he cha-con D jn h nghTa 2: Cay dugc djnh nghTa de quy nhu sau: - Mgt nut la mgt cay va nut cung la goc ciia cay - Gia sir T|, T2 , T„ (n > 1) la cac cay co goc tuong img ri, r2, , r„ Khi cay T voi goc r dugc hinh bang each cho r tro nut cha cua cac niit ri, r2 , , rn 131 4.1.2 Mot so khai niem cd ban - B a c c m m p t nuf la so cua nut - B g c cu a m ot cay: la bac cua mit c6 bac Ion nhat tren cay (so cay ccot toi da cua mot nut thupc cay) Cay c6 bac n thi goi la cay n - phan - N u t gdc: la nut khong c6 nut cha - N iit Id: la nut c6 bac bang - N iit nhdnh: la nut c6 bac khac va khong phai la niit goc - Mice cu a m g t nut: Muc (g6c (To)) =1 Goi T| Ti T„ la cac cay cua To Khi Muc (T ,) = Muc (T2) = = Muc (T„) = Muc (To) +1 - C h ieu cao cu a cay: la muc ciia nut c6 muc Ion nhat c6 tren cay - D u o n g di: Day cac nut ni, n2, , nk dupe goi la dubmg di neu ni la ( cl cua ni+i (1 < i < k-1) - D g d d i cu a d uem g di: la so nut tren duong di trir - C a y d u g c s a p th u tu: Trong mpt cay, nSu cac cay cua moi mit dduc sip theo mpt thu nhat dinh, thi cay dupe gpi la cay dupe sap (cayy ( thu tu) Ching han, hinh minh hoa hai cay dupe sip khac 132 Hinh 4.2 Hai cay duffc s3p khae - Rung-, la tap hop him han cac cay phan biet H'mh 4.3 Ru ng gom ba cay Sau day ta se tim hieu mot loai cay dac biet dugc gpi la cay nhi phan 4.2 CAY NHI PHAN 4.2.1 Djnh nghia Cay nhi phan la cay ma moi nut c6 toi da hai cay Doi voi cay cua mot nut ngudi ta cung phan biet cay trai va cay phai Nhu vay cay nhi phan la cay c6 thu tur 4.2.2 Tinh chat Doi voi cay nhi phan can chu y tai mot so tinh ch4t sau; So lugng toi da cac nut c6 muc i tren cay nhj phan la ' (i ^ 1) So lugng niit t6i da tren mot cay nhi phan c6 chigu cao h la 2''-l(h > ) 133 C h u n g m inh - Ti'nh chat sg dupe chirng minh bang quy nap B u o c c a s a : voi i = 1, cay nhi phan c6 = 2^*nut Vay menh de dung voi i = B u a c q u y nap: Gia su ket qua dung vai muc i, nghia la a muc cay nhi phan COtoi da 2''' nut, ta chung minh menh de dung voi muc i + Theo djnh nghia cay nhj phan thi tai moi nut c6 toi da hai cay nen moi nut a miic ic6 toi da hai Do theo gia thiet quy nap ta suy tai muc i+ ta CO 2'“'x2=2'mit - Tinh chat dugre chung minh nhu sau; Ta da biet rSng chieu cao ciia cay la so miic Ion nhat c6 tren cay Ta c6 so nut toi da c6 tren cay nhj phan voi chieu cao h la: 2®+2' + + ''‘ ' = ' ' - l Tir ket qua c6 the suy ra: Neu cay nhi phan c6 n nut thi chieu cao ciia no la h = f log2 (n + 1)1 (Ta quy uoc : fx1 la so nguyen nho nhat > x LxJ la so nguyen Ion nhat < x ) 4.2.3 Bieu dien cay nhj phan L i r u t r i r k e tie p Phuong phap t\r nhien nhat de bieu dien cay nhj phan la chi niit trai va nut phai ciia moi mit De thvrc hign vige ta c6 the su dqng mgt mteg de luu trii cac nut cua cay nhi phan Moi nut cua cay dugre bieu dien boi b ^ ghi gom ba th^h phan: infor: mo ta thong tin gin voi moi niit Left: chi mit trai Right: chi mit phai Gia su cac nut cua cay dugre danh s6 tir dgn m a x-1 , du ligu cua cac mit tren cay c6 kieu la Ite m Khi cau true du ligu bieu dien cay nhi phan dugre khai bao nhu sau: #define max N //so thii tg Ion nhat cua nut tren cay 134 //Khai bao kieu du li?u Item (neu can) struct Node { Item infer; int Letf; int Right; }; Node Tree[max]; Bang 4.1 minh hoa cau true du lieu bieu dien cay nhi phan hinh 4.5 Bang 4.L Cau true dir li|u bieu diln cay infor Left Right A B C D E 10 F 0 G 11 H 0 0 10 J 0 11 K 0 135 Neu CO mot cay nhi phan hoan chinh day dii, ta c6 the de dang danh so cho cac nut tren cay theo thu tir Ian lugt tir muc 0, 1, 2, het muc den muc khac va tu trai qua phai d6i vai cac nut a moi muc Vi du voi hinh 4.6 CO the danh so nhu sau: Hinli 4.6 Cay nhj phan dirp’c danh so Ta c6 nhan xet sau: cua nut i la cac nut 2i+l va 2i + hoac cha cua nut j laLj/2-lJ Nhu vay, ta c6 the luu tru cay bang mot mang T, theo nguyen tac: nut thu i cua cay duqc luu tm a T[i] Do chinh la each luu tru ke tiep doi vai cay nhi phan Vai each luu tru neu biet dugc dia chi ciia mit se tinh dugc dia chi nut cha va ngugc lai Vai cay day du neu tren thi hinh anh luu tru se nhu sau: A B C D E F G T[0] T[l] T[2] T[3] T[4] T[5] T[6] Nhdn xel: Neu cay nhj phan khong d4y du thi each luu tru khong thich hop vi se gay lang phi bo nha c6 nhieu phan tir bo (ung vai cay rong) Ta hSy xet cay nhu hinh 4.7 De luu tru cay ta phai diing mang gom 15 phan tu ma chi c6 phan tir khac rong, hinh anh luu tru mi^n nha cua cay nhu sau: 36 H'mh 4.7 Cay nhj phan dSc bift B C 0 D 0 0 0 E ( : chi cho trong) Neu cay nhj phan luon bien dong nghTa la c6 phep bo sung, loai bo cac nut thircmg xuyen tac dong thi each luu tru gap phai nipt so nhuoc diem nhu phai dich chuyen cac phan tu mang dan den ton thai gian phai thirc hien cac thao tac nay, dp cao ciia cay phu thupc vao kich thuac cua m ang, 4.2.3.Z Luu tru-moc noi Cach lull tru khac phuc dupe nhung nhupc diem cua each luu tru ke tiep dong thai phan anh dupe dang tu nhien cua cay I'rong each liru tru moc noi, moi nut tuang ung voi mot phan tu nho c6 quy each nhu sau: Letf infer Right - infer ung vai thong tin (du lieu) cua niit —T.pf t I'rng vai trb trb tai cay trai ciia niit - Right irng voi tro, tro tai cay phai cua nut Ta CO the khai bao cau trite du lieu nhu sau: struct Node Item infor; Node *Left, *Right; }; typydef Node *TRO; TRO Root; // Con tro Root tro vao nut goc cay 137 Vi du: Cay nhj phan hinh 4.6 c6 dang liru tru moc noi nhu a hinh 4.8 root Hhili 4.8 Cay nhj phan liru trO' m6c noi De liru tru va thao tac vai cay, can mot tro r o o t , tro tai nut goc ciia cay 4.2.4 Phep duyet cay nhj phan Vice truy xuat vao cac mit mot each c6 he thong, cho moi niit duoc truy xuat dung mpt Ian theo mot thii xdc dinh, gpi la phep duypt cay Co the duyet cay nhj phan theo mpt ba thu tir: duyet truoc, duyet giua va duypt sau, cac phep duypt dupe djnh nghTa de quy nhu sau; 4.2.4.1 D ay f t theo thir t{r trir&c (Node-Left-Right, Node-Right-Left) Neu cay khac rong - Tham goc (truy xuat nut goc) - Duyet cay trai theo thu tu truoc - Duyet cay phai theo thu tu truoc 4.2.4.2 Day f t theo thirtugiita (Left-Node-Right, Right-Node-Left) Neu cay khac rong - Duyet cay trai theo thu tu giua - ThSm goc - Duyet cay phai theo thu tu giua 138 4.2.4.3 D uyft theo th& tu sau (Left-Right-Node, Right-Left-Node) Neu cay khac rong - Duyet cay trai theo thu tir sau - Duyet cay phai theo thu tir sau - Thant goc Tuomg ling vai ba phep duyet ta c6 ba ham duyet cay nhj phan Sau day la ham de quy duyet cay theo thu tu trudc: void NLR (TRO root) { if (root != NOLL) { visit(root); NLR(root->Left); NLR(root->Right); } } Mot each tuomg tu, ta c6 the viet dugc cac ham de quy di qua cay theo thu Vai cay nhi phan hinh 4.9, day cac niit dugc tham cac phep duyet la: - Duyet theo thu tu truac: A B D G H E C F I G - Duyet theo thu giua: GDHBEAFICG - Duyet theo thii tu sau: G F I D E B I F G C A 139 4.2.5 Cay nhj phan bieu dien bieu thu'c Cay bieu thuc la cay nhj phan ma nut goc va cac niit nhanh chira cac toan tir (phep loan) cac nut la thi chua cac toan h ^ g 4.2.5.1 Cach dung cay bieu thirc Doi vai phep toan hai ngoi (chang han +, *, /) dugc bieu dien bai cay nhi phan ma goc cua no chua toan tir (TT), cay trai bieu dien toan hang (TH) ben trai, cay ben phai bieu dien toan hang ben phai Doi vai phep toan mot ngoi nhu "phii dinh" hoac "phep toan doi dau", hoac cac ham chuan nhu exp() hoac cos() thi cay ben trai rong Con voi cac phep toan mot toan hang nhu phep "lay dao ham" ()' hoac ham "giai thira" ()! thi cay ben phai rong HUth 4.1 L Mpt so cay bieu thiic 140 int Improvement_Sequence_Search(int X[], int n, int KH) { //I Khoi tao int i=0; X[n]=KH; // {tim khoa day while (X(i] != KH) i=i+l; // Kiem tra va tra ve ket qua tim kiem if (i