Bài tập lớn: Cây nhị phân tìm kiếm
Số trang: 18
Loại file: docx
Dung lượng: 135.32 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Sử dụng cấu trúc dạng cây, chúng ta cần dùng giải thuật nào với từng dạng dữ liệu để đạt hiệu quả cao nhất. Để giải quyết vấn đề trên ta cùng tìm hiểu một số phương pháp duyệt cây. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài tập lớn: Cây nhị phân tìm kiếm[Typetext] 1[Typetext]M ỤCL ỤC 2[Typetext] LờimởđầuCùngvớisựpháttriểncủakhoahọckĩthuật,côngnghệthôngtinnóichungvàbộmôncấutrúcdữliệuvàgiảithuậtnóiriêngngàycàngđượcứngdụngrộngrãitrongnhiềulĩnhvực.Vớimộtcơsởdữliệukhổnglồ,việcđưaramộtphươngphápnhằmgiảiquyếtvấnđềtìmkiếmdữliệucóhiệuquảvànhanhchóngnhấtluônđượcsựquantâmcủacácnhàpháttriểnphầnmềm.Thôngthườngdữliệuđượcbiểudiễndướidạngdanhsáchliênkết.Việctruysuấtdữliệuchưađạthiệuquảcao.Sửdụngcấutrúcdữliệucâylàmộtgiảipháplàmtănghiệusuấttrongcácthaotácxửlý.Vấnđềđặtra:vớiviệcsửdụngcấutrúcdạngcây,chúngtacầndùnggiảithuậtnàovớitừngdạngdữliệuđểđạthiệuquảcaonhất.Đểgiảiquyếtvấnđềtrêntacùngtìmhiểumộtsốphươngphápduyệtcây. 3[Typetext]I. CƠSỞLÝTHUYẾT I.1. Câynhịphântìmkiếm Cây(Trees)làmộttậphợphữuhạncácphầntửgọilànútcây(Node),trong đócómộtnútđặcbiệtgọilànútgốc(Root).Trêntậphợpcácnútnàycó mộtquanhệphâncấpgọilàquanhệchacon. Câynhịphântìmkiếm(binarysearchtree–BST)làcâynhịphântrongđótại mỗinút,khóacủanútđangxétlớnhơnnútkhóacủatấtcảcácnútthuộccây contráivànhỏhơntấtcảnútkhóathuộccâyconphải. Vídụ I.2. Mộtsốkháiniệm Mộtnútđơnđộccũnglàmộtcây. Tậphợprỗngcũnglàmộtcâymàtagọilàcâyrỗng. Mứccủamộtnút: +Nútgốc:Mức0. +Cácnútcáchnútgốcicạnhđượcgọilànútởmứci. Nútgốc(Root):Lànútkhôngcónútcha. Nútlá(leaf):Lànútkhôngcónútcon. Chiềucaocủamộtnút:Làđộdàiđườngđitừnútđóđếnnútláxanhất.. Chiềucaocủamộtcây:Làchiềucaocủanútgốc. 4[Typetext] Bậccủamộtnút:Làsốnútconcủanútđó. Bậccủamộtcây:Làbậccaonhấtcủacácnúttrongcây.II. MÔTẢCÁCTHAOTÁCTRÊNCÂYNHỊPHÂNTÌMKIẾM II.1. KhaibáocàiđặtcâynhịphânĐểbiểudiễncâynhịphântachọnphươngphápcấpphátliênkết.ứngvớimộtnútcủa,tadùngmộtbiếnđộnglưutrữcácthôngtin. Thôngtinlưutrữtạinút. Địachỉnútgốccủacâycontráitrongbộnhớ. Địachỉcủanútgốccủacâyconphảitrongbộnhớ. Khaibáotươngứngnhưsau: #include #include typedefintitem; structNODE { intkey; NODE*Left,*Right; typedefNODE*TREE; II.2. Hàmkhởitạorỗng voidkhoitaorong(TREE&T){ T=NULL; } II.3. Hàmkiểmtrarỗng intktrarong(TREET){ if(T==ULL) return1; 5[Typetext] else return0; } II.4. Hàmthêmmộtnút Hàmnàychophépchúngtanhậpthêmmộtsốvàodãysốmàtađãnhậpvà xétsốđóđểsắpxếpvàovịtrícủamộtnúttrongcây. Xảyrahaitrườnghợp: Câyrỗng. Câykhôngrỗng. NếuXtrùngvớigốcthìtakhôngthểthêmnode. NếuXgốcthìtathêmvàobênphải. II.5. Hàmxóamộtnút. Hàmchophéptaxóamộtnúttrongcâytìmkiếmnhịphân. Xảyrahaitrườnghợp. Câyrỗng. Câykhácrỗng. Xlànútlá. Xchỉcómộtcontrái(phải). Xcóđủcảhaicon Xâydựngthêmhàmtìmkiếm. Hàmtìmkiếmcónhiệmvụxácđịnhvịtrícủanútcầnxóa. II.6. Hàmnhậpmộtcâytìmkiếmnhịphân Chophéptanhậpnsốtamuốn,nsốđósẽtạothànhnnúttrongcây nhịphân. Hàmcònlàmthêmnhiệmvụsắpxếpvịtríđứngcủacácnútvừa nhập. 6[Typetext] II.7. Hàmduyệtcây II.7.1. Duyệttheothứtựtrước Hàmcónhiệmvụ: Thămnútgốc. Thămcácnútgốccủacâycontráitheothứtựtrước. Thămcácnútgốccủacâyconphảitheothứtựtrước. II.7.2. Duyệttheothứtựgiữa Hàmcónhiệmvụ: Thăm ...
Nội dung trích xuất từ tài liệu:
Bài tập lớn: Cây nhị phân tìm kiếm[Typetext] 1[Typetext]M ỤCL ỤC 2[Typetext] LờimởđầuCùngvớisựpháttriểncủakhoahọckĩthuật,côngnghệthôngtinnóichungvàbộmôncấutrúcdữliệuvàgiảithuậtnóiriêngngàycàngđượcứngdụngrộngrãitrongnhiềulĩnhvực.Vớimộtcơsởdữliệukhổnglồ,việcđưaramộtphươngphápnhằmgiảiquyếtvấnđềtìmkiếmdữliệucóhiệuquảvànhanhchóngnhấtluônđượcsựquantâmcủacácnhàpháttriểnphầnmềm.Thôngthườngdữliệuđượcbiểudiễndướidạngdanhsáchliênkết.Việctruysuấtdữliệuchưađạthiệuquảcao.Sửdụngcấutrúcdữliệucâylàmộtgiảipháplàmtănghiệusuấttrongcácthaotácxửlý.Vấnđềđặtra:vớiviệcsửdụngcấutrúcdạngcây,chúngtacầndùnggiảithuậtnàovớitừngdạngdữliệuđểđạthiệuquảcaonhất.Đểgiảiquyếtvấnđềtrêntacùngtìmhiểumộtsốphươngphápduyệtcây. 3[Typetext]I. CƠSỞLÝTHUYẾT I.1. Câynhịphântìmkiếm Cây(Trees)làmộttậphợphữuhạncácphầntửgọilànútcây(Node),trong đócómộtnútđặcbiệtgọilànútgốc(Root).Trêntậphợpcácnútnàycó mộtquanhệphâncấpgọilàquanhệchacon. Câynhịphântìmkiếm(binarysearchtree–BST)làcâynhịphântrongđótại mỗinút,khóacủanútđangxétlớnhơnnútkhóacủatấtcảcácnútthuộccây contráivànhỏhơntấtcảnútkhóathuộccâyconphải. Vídụ I.2. Mộtsốkháiniệm Mộtnútđơnđộccũnglàmộtcây. Tậphợprỗngcũnglàmộtcâymàtagọilàcâyrỗng. Mứccủamộtnút: +Nútgốc:Mức0. +Cácnútcáchnútgốcicạnhđượcgọilànútởmứci. Nútgốc(Root):Lànútkhôngcónútcha. Nútlá(leaf):Lànútkhôngcónútcon. Chiềucaocủamộtnút:Làđộdàiđườngđitừnútđóđếnnútláxanhất.. Chiềucaocủamộtcây:Làchiềucaocủanútgốc. 4[Typetext] Bậccủamộtnút:Làsốnútconcủanútđó. Bậccủamộtcây:Làbậccaonhấtcủacácnúttrongcây.II. MÔTẢCÁCTHAOTÁCTRÊNCÂYNHỊPHÂNTÌMKIẾM II.1. KhaibáocàiđặtcâynhịphânĐểbiểudiễncâynhịphântachọnphươngphápcấpphátliênkết.ứngvớimộtnútcủa,tadùngmộtbiếnđộnglưutrữcácthôngtin. Thôngtinlưutrữtạinút. Địachỉnútgốccủacâycontráitrongbộnhớ. Địachỉcủanútgốccủacâyconphảitrongbộnhớ. Khaibáotươngứngnhưsau: #include #include typedefintitem; structNODE { intkey; NODE*Left,*Right; typedefNODE*TREE; II.2. Hàmkhởitạorỗng voidkhoitaorong(TREE&T){ T=NULL; } II.3. Hàmkiểmtrarỗng intktrarong(TREET){ if(T==ULL) return1; 5[Typetext] else return0; } II.4. Hàmthêmmộtnút Hàmnàychophépchúngtanhậpthêmmộtsốvàodãysốmàtađãnhậpvà xétsốđóđểsắpxếpvàovịtrícủamộtnúttrongcây. Xảyrahaitrườnghợp: Câyrỗng. Câykhôngrỗng. NếuXtrùngvớigốcthìtakhôngthểthêmnode. NếuXgốcthìtathêmvàobênphải. II.5. Hàmxóamộtnút. Hàmchophéptaxóamộtnúttrongcâytìmkiếmnhịphân. Xảyrahaitrườnghợp. Câyrỗng. Câykhácrỗng. Xlànútlá. Xchỉcómộtcontrái(phải). Xcóđủcảhaicon Xâydựngthêmhàmtìmkiếm. Hàmtìmkiếmcónhiệmvụxácđịnhvịtrícủanútcầnxóa. II.6. Hàmnhậpmộtcâytìmkiếmnhịphân Chophéptanhậpnsốtamuốn,nsốđósẽtạothànhnnúttrongcây nhịphân. Hàmcònlàmthêmnhiệmvụsắpxếpvịtríđứngcủacácnútvừa nhập. 6[Typetext] II.7. Hàmduyệtcây II.7.1. Duyệttheothứtựtrước Hàmcónhiệmvụ: Thămnútgốc. Thămcácnútgốccủacâycontráitheothứtựtrước. Thămcácnútgốccủacâyconphảitheothứtựtrước. II.7.2. Duyệttheothứtựgiữa Hàmcónhiệmvụ: Thăm ...
Tìm kiếm theo từ khóa liên quan:
Cây nhị phân tìm kiếm Cấu trúc dữ liệu và giải thuật Khai báo cài đặt cây nhị phân Hàm xác định số nút của cây Hàm kiểm tra rỗngTài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 325 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 167 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 165 0 0 -
3 trang 163 3 0
-
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 158 0 0 -
10 trang 141 0 0
-
57 trang 137 1 0
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 4: Một số giải thuật sắp xếp và tìm kiếm
29 trang 120 0 0 -
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 1 - Trần Hạnh Nhi
98 trang 118 0 0 -
49 trang 74 0 0