




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第一章數(shù)據(jù)結(jié)構(gòu)與算法n1.1算法n1.2數(shù)據(jù)結(jié)構(gòu)的基本概念n1.3線性表及其順序存儲結(jié)構(gòu)n1.4棧和隊列n1.5線性鏈表n1.6樹與二叉樹n1.7查找技術(shù)n1.8排序技術(shù)21.1算法n1.1.1 算法的基本概念n算法:是指解題方案的準(zhǔn)確而完整的描述。 算法不等于程序,也不等于計算機方法,程序的編制不可能優(yōu)于算法的設(shè)計。1、算法的基本特征:是一組嚴(yán)謹(jǐn)?shù)囟x運算順序的規(guī)則,每一個規(guī)則都是有效的,是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。31.1算法n特征包括:(1)可行性;(2)確定性,算法中每一步驟都必須有明確定義,不允許有模棱兩可的解釋,不允許有多義性;(3)有窮性,算法必須能在有限的時間內(nèi)做完
2、,取能在執(zhí)行有限個步驟后終止,包括合理的執(zhí)行時間的含義;(4)擁有足夠的情報。41.1算法n2、算法的基本要素:n一是對數(shù)據(jù)對象的運算和操作;n二是算法的控制結(jié)構(gòu)。n基本運算和操作包括:算術(shù)運算、邏輯運算、關(guān)系運算、數(shù)據(jù)傳輸。n一個算法一般都可以用順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組合而成。51.1算法n1.1.2算法的復(fù)雜度n 算法時間復(fù)雜度和算法空間復(fù)雜度。61.1算法n1.算法的時間復(fù)雜度n算法時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。算法的工作量用算法所執(zhí)行的基本運算次數(shù)來度量,而算法所執(zhí)行的基本運算次數(shù)是問題規(guī)模的函數(shù),即n 算法的工作量=f(n)最壞情況復(fù)雜性:是指在規(guī)模為n時,算法
3、所執(zhí)行的基本運算的最大次數(shù)。(例:O(n2))常見的時間復(fù)雜度,按數(shù)量級比較排列關(guān)系為:)2()()()log()(log) 1 (222nkOnOnOnnOnOO71.1算法n2.算法空間復(fù)雜度n算法空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。n 一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。81.2數(shù)據(jù)結(jié)構(gòu)的基本概念 n數(shù)據(jù)結(jié)構(gòu)是指相互有關(guān)聯(lián)的數(shù)據(jù)元素的集合。n數(shù)據(jù)結(jié)構(gòu)研究的三個方面:(1)數(shù)據(jù)集合中和數(shù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);(2)在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);(
4、3)對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。 n討論以上問題的主要目的是為了提高數(shù)據(jù)的效率。所謂提高數(shù)據(jù)處理的效率,主要包括兩個方面:一是提高數(shù)據(jù)處理的速度,二是盡量節(jié)省在數(shù)據(jù)處理過程中所占用的計算機存儲空間。9n數(shù)據(jù)的邏輯結(jié)構(gòu)包含:n(1)表示數(shù)據(jù)元素的信息;n(2)表示各數(shù)據(jù)元素之間的前后件關(guān)系。n數(shù)據(jù)的邏輯結(jié)構(gòu)分為:線性結(jié)構(gòu)與非線性結(jié)構(gòu)n線性結(jié)構(gòu)條件:n(1)有且只有一個根結(jié)點;n(2)每一個結(jié)點最多有一個前件,也最多有一個后件。n非線性結(jié)構(gòu):不滿足線性結(jié)構(gòu)條件的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)10n數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。 數(shù)據(jù)的存儲
5、結(jié)構(gòu)有順序、鏈接、索引等。數(shù)據(jù)的存儲結(jié)構(gòu)數(shù)據(jù)的存儲結(jié)構(gòu)111.3 線性表及其存儲結(jié)構(gòu)n1.3.1 線性表的基本概念線性表由一組數(shù)據(jù)元素構(gòu)成,數(shù)據(jù)元素的位置只取決于自己的序號,元素之間的相對位置是線性的。學(xué)生情登記表姓名學(xué)號性別年齡健康狀況王強800356男19良好劉建平800357男20一般趙軍800361女19良好葛文華800367男21較差12n在復(fù)雜線性表中,由若干項數(shù)據(jù)元素組成的數(shù)據(jù)元素稱為記錄,而由多個記錄構(gòu)成的線性表又稱為文件。n非空線性表的結(jié)構(gòu)特征:n(1)有且只有一個根結(jié)點a1,它無前件;n(2)有且只有一個終端結(jié)點an,它無后件;n(3)除根結(jié)點與終端結(jié)點外,其他所有結(jié)點有且
6、只有一個前件,也有且只有一個后件。結(jié)點個數(shù)n稱為線性表的長度,當(dāng)n=0時,稱為空表。13n線性表的順序存儲結(jié)構(gòu)具有以下兩個基本特點:n(1)線性表中所有元素的所占的存儲空間是連續(xù)的;n(2)線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。ai的存儲地址為:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)為第一個元素的地址,k代表每個元素占的字節(jié)數(shù)。線性表的順序存儲結(jié)構(gòu)14順序表的基礎(chǔ)要點n1、線性表是具有、線性表是具有n個數(shù)據(jù)元素的有限序列。個數(shù)據(jù)元素的有限序列。n2、線性表的順序存儲結(jié)構(gòu)具有三個弱點:線性表的順序存儲結(jié)構(gòu)具有三個弱點:n在插入和刪除時,需移動大量元素在插入
7、和刪除時,需移動大量元素n由于難以估計,必須預(yù)先分配較大的空間由于難以估計,必須預(yù)先分配較大的空間n表的容量難以擴充表的容量難以擴充 (如何解決?)如何解決?)n3、順序存儲結(jié)構(gòu)通過元素的相對存儲地址來表示元素之間的關(guān)系、順序存儲結(jié)構(gòu)通過元素的相對存儲地址來表示元素之間的關(guān)系n4、線性表順序存儲的優(yōu)點是可隨機存取元素。、線性表順序存儲的優(yōu)點是可隨機存取元素。n5、順序表中邏輯上相鄰的元素的物理位置必定緊鄰。、順序表中邏輯上相鄰的元素的物理位置必定緊鄰。 n6、順序表是一種隨機存取的存儲結(jié)構(gòu)。、順序表是一種隨機存取的存儲結(jié)構(gòu)。n7、在順序表中插入或刪除一個元素時,需要平均移動表的一半元、在順序表
8、中插入或刪除一個元素時,需要平均移動表的一半元素,具有移動的元素個數(shù)與該元素的位置有關(guān)。素,具有移動的元素個數(shù)與該元素的位置有關(guān)。n8、在長度為、在長度為n的順序表中插入一個元素的時間復(fù)雜度為的順序表中插入一個元素的時間復(fù)雜度為O(n),刪除,刪除一個元素的時間復(fù)雜度為一個元素的時間復(fù)雜度為O(n)。15n線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)是指用一組任意的存儲單元(可以連續(xù),也可以不連續(xù))存儲線性表中的數(shù)據(jù)元素。因此,鏈表中結(jié)點的邏輯次序和物理次序不一定相同。為了能正確表示數(shù)據(jù)元素間的邏輯關(guān)系,對于每個數(shù)據(jù)元素不僅要表示它的具體內(nèi)容,還要附加一個表示它的直接后繼元素存儲位置的信息。這個信息稱為指針(poin
9、ter)或鏈(link)。這兩部分組成了鏈表中的結(jié)點結(jié)構(gòu):n datalink指針域,用來存放結(jié)點指針域,用來存放結(jié)點的直接后繼的地址的直接后繼的地址數(shù)據(jù)域,用來數(shù)據(jù)域,用來存放結(jié)點的值存放結(jié)點的值1.4 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)-鏈表16n n術(shù)語n表示每個數(shù)據(jù)元素的兩部分信息組合在一起被稱為結(jié)點;n其中表示數(shù)據(jù)元素內(nèi)容的部分被稱為數(shù)據(jù)域(data);n表示直接后繼元素存儲地址的部分被稱為指針或指針域(next)。n headd cba單聯(lián)表結(jié)構(gòu)示意圖單聯(lián)表結(jié)構(gòu)示意圖datalink17n數(shù)據(jù)結(jié)構(gòu)中的每一個結(jié)點對應(yīng)于一個存儲單元,這種存儲單元稱為存儲結(jié)點,簡稱結(jié)點。n結(jié)點由兩部分組成:(1)用于
10、存儲數(shù)據(jù)元素值,稱為數(shù)據(jù)域;(2)用于存放指針,稱為指針域,用于指向前一個或后一個結(jié)點。n在鏈?zhǔn)酱鎯Y(jié)構(gòu)中,存儲數(shù)據(jù)結(jié)構(gòu)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。n鏈?zhǔn)酱鎯Ψ绞郊纯捎糜诒硎揪€性結(jié)構(gòu),也可用于表示非線性結(jié)構(gòu)。18n鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點n(1)線性表中的數(shù)據(jù)元素在存儲單元中的存放順序與邏輯順序不一定一致;n(2)在對線性表操作時,只能通過頭指針進入鏈表,并通過每個結(jié)點的指針域向后掃描其余結(jié)點,這樣就會造成尋找第一個結(jié)點和尋找最后一個結(jié)點所花費的時間不等,具有這種特點的存取方式被稱為順序存取方式。19n循環(huán)
11、鏈表(circular linked list)n循環(huán)鏈表是表中最后一個結(jié)點的指針指向頭結(jié)點,使鏈表構(gòu)成環(huán)狀n特點:從表中任一結(jié)點出發(fā)均可找到表中其他結(jié)點,提高查找效率hh空表20例題講解21n鏈表不具有的特點是A) 不必事先估計存儲空間 B) 可隨機訪問任一元素C) 插入刪除不需要移動元素D) 所需空間與線性表長度成正比n用鏈表表示線性表的優(yōu)點是 A) 便于隨機存取 B) 花費的存儲空間較順序存儲少 C) 便于插入和刪除操作 D) 數(shù)據(jù)元素的物理順序與邏輯順序相同n長度為n的順序存儲線性表中,當(dāng)在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為 【1】 。22n線性表
12、L=(a1,a2,a3,ai,an),下列說法正確的是A) 每個元素都有一個直接前件和直接后件B) 線性表中至少要有一個元素C) 表中諸元素的排列順序必須是由小到大或由大到小D) 除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件 n在單鏈表中,增加頭結(jié)點的目的是 A) 方便運算的實現(xiàn) B) 使單鏈表至少有一個結(jié)點 C) 標(biāo)識表結(jié)點中首結(jié)點的位置 D) 說明單鏈表是線性表的鏈?zhǔn)酱鎯崿F(xiàn)23n循環(huán)鏈表的主要優(yōu)點是 A) 不再需要頭指針了 B) 從表中任一結(jié)點出發(fā)都能訪問到整個鏈表 C) 在進行插入、刪除運算時,能更好保證鏈表不斷開 D) 已知某個結(jié)點的位置能容易的找到
13、它的直接前件n線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)分別是 A) 順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu) B) 隨機存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu) C) 隨機存取的存儲結(jié)構(gòu)、隨機存取的存儲結(jié)構(gòu) D) 任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu) 24n下列對于線性鏈表的描述中正確的是下列對于線性鏈表的描述中正確的是_。A)存儲空間不一定是連續(xù),且各元素的存儲順序是任意的B)存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面C)存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面D)存儲空間必須連續(xù),且各元素的存儲順序是任意的n下列敘述中正確的是下列敘述中正確的是_。A)一個邏輯數(shù)據(jù)結(jié)構(gòu)
14、只能有一種存儲結(jié)構(gòu)B)數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C)一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D)一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率25棧n是一種特殊的線性表。其特殊性在于限定插入和刪除數(shù)據(jù)元素的操作只能在線性表的表尾端進行。如下所示:nn 進行插入和刪除的表尾端是浮動端,通常被稱為棧頂, an 為棧頂元素, 并用一個“棧頂指針”指示;而表頭端是固定端,通常被稱為棧底, a1 為棧底元素,。我們經(jīng)常將棧用下圖的形式描述:a1, a2, a3, ., an 插入和刪除端插入和刪除端26an.a2a1棧 頂 to
15、p27結(jié)論:結(jié)論:后進先出后進先出(Last In First Out),簡),簡稱為稱為LIFO線性表。線性表。 舉例舉例1:家里吃飯的碗,通常在洗干凈后一個:家里吃飯的碗,通常在洗干凈后一個一個地落在一起存放,在使用時,若一個一一個地落在一起存放,在使用時,若一個一個地拿,一定最先拿走最上面的那只碗,而個地拿,一定最先拿走最上面的那只碗,而最后拿出最下面的那只碗。最后拿出最下面的那只碗。 舉例舉例2:在建筑工地上,使用的磚塊從底:在建筑工地上,使用的磚塊從底往上一層一層地碼放,在使用時,將從最上往上一層一層地碼放,在使用時,將從最上面一層一層地拿取。面一層一層地拿取。28棧的基本運算n棧的
16、基本運算:n(1)插入元素稱為入棧運算;n(2)刪除元素稱為退棧運算;n(3)讀棧頂元素是將棧頂元素賦給一個指定的變量,此時指針無變化29n 棧頂指針和棧中元素之間的關(guān)系棧頂指針和棧中元素之間的關(guān)系base A B C D Etoptop 指向棧頂元素棧的順序存儲及運算30棧的鏈?zhǔn)酱鎯若是棧中元素的數(shù)目變化范圍較大或不清楚棧元素的數(shù)目,就應(yīng)該考慮使用鏈?zhǔn)酱鎯Y(jié)構(gòu)。人們將用鏈?zhǔn)酱鎯Y(jié)構(gòu)表示的棧稱作“鏈?!薄f湕MǔS靡粋€無頭結(jié)點的單鏈表表示。如圖所示。n由于棧的插入刪除操作只能在一端進行,而對于單鏈表來說,在首端插入刪除結(jié)點要比尾端相對地容易一些,所以,我們將單鏈表的首端作為棧頂端,即將單鏈表
17、的頭指針作為棧頂指針。31隊列及其基本運算n隊列(Queue)也是一種運算受限的線性表。它只允許在表的一端進行插入,而在另一端進行刪除。允許刪除的一端稱為隊頭(front),允許插入的一端稱為隊尾(rear)。n例如:排隊購物。操作系統(tǒng)中的作業(yè)排隊。先進入隊列的成員總是先離開隊列。因此隊列亦稱作先進先出(First In First Out)的線性表,簡稱FIFO表。32n下圖是隊列的示意圖:nn a1a2annnn插入端和刪除端都是浮動的。通常我們將插入端稱為隊尾,用一個“隊尾指針”指示;而刪除端被稱為隊頭,用一個“隊頭指針”指示。n 結(jié)論:先進先出(First In First Out),
18、簡稱為FIFO線性表。 出隊入隊33n隊列是指允許在一端(隊尾)進入插入,而在另一端(隊頭)進行刪除的線性表。Rear指針指向隊尾,front指針指向隊頭。n隊列是“先進行出”(FIFO)或“后進后出”(LILO)的線性表。n隊列運算包括(1)入隊運算:從隊尾插入一個元素;(2)退隊運算:從隊頭刪除一個元素。隊列基本運算34n隊列的順序存儲結(jié)構(gòu)n實現(xiàn):用一維數(shù)組實現(xiàn)sqMfront=-1rear=-1123450隊空123450frontJ1,J1,J3入隊J1J2J3rearrear123450J4,J5,J6入隊J4J5J6front設(shè)兩個指針front,rear,約定:rear指示隊尾元
19、素;front指示隊頭元素前一位置初值front=rear=-1空隊列條件:front=rear入隊列:sq+rear=x;出隊列:x=sq+front;rearrearfrontrear123450J1,J2,J3出隊J1J2J3frontfrontfront35n存在問題n設(shè)數(shù)組維數(shù)為M,則:n當(dāng)front=-1,rear=M-1時,再有元素入隊發(fā)生溢出真溢出n當(dāng)front-1,rear=M-1時,再有元素入隊發(fā)生溢出假溢出n解決方案:循環(huán)隊列(掌握計算隊列元素個數(shù)的方法)n基本思想:把隊列設(shè)想成環(huán)形,讓sq0接在sqM-1之后,若rear+1=M,則令rear=0;0M-11frontr
20、ear.n實現(xiàn):利用“?!边\算n入隊: rear=(rear+1)%M; sqrear=x;n出隊: front=(front+1)%M; x=sqfront;n隊滿、隊空判定條件n 解決方案:n 1.另外設(shè)一個標(biāo)志以區(qū)別隊空、隊滿n 2.少用一個元素空間:n 隊空:front=rearn 隊滿:(rear+1)%M=frontn 36n隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)n 隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)簡稱為鏈隊列,它是限制僅在表頭刪除和表尾插入的單鏈表。顯然僅有單鏈表的頭指針不便于在表尾做插入操作,為此再增加一個尾指針,指向鏈表的最后一個結(jié)點。于是,一個鏈隊列由一個頭指針和一個尾指針唯一確定。添加頭節(jié)點。和順序隊列類
21、似,我們也是將這兩個指針封裝在一起,frontrear37例題講解38n按照按照“后進先出后進先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是_。A)隊列 B)棧 C)雙向鏈表 D)二叉樹n下列敘述中正確的是下列敘述中正確的是_。A)循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B)在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C)在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D)循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定39n設(shè)某循環(huán)隊列的容量為50,頭指針Front=5 (指向隊頭元素的前一位置),尾指針rear=29(指向隊尾元素),則
22、該循環(huán)隊列中共有 個元素。n設(shè)某循環(huán)隊列的容量為50,如果頭指針Front45(指向隊頭元素的前一位置),尾指針rear=10 (指向隊尾元素) 則該循環(huán)隊列中共有 個元素。 n當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。這種情況稱為 。4016 樹與二叉樹 n樹是一種簡單的非線性結(jié)構(gòu),所有元素之間具有明顯的層次特性。n 在樹結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點,沒有前件的結(jié)點只有一個,稱為樹的根結(jié)點,簡稱樹的根。每一個結(jié)點可以有多個后件,稱為該結(jié)點的子結(jié)點。沒有后件的結(jié)點稱為葉子結(jié)點。n 在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件的個數(shù)稱為該結(jié)點的度,所有結(jié)點中最
23、大的度稱為樹的度。樹的最大層次稱為樹的深度。41(C)是有13個結(jié)點的樹,其中A是根,其余結(jié)點分成3個子集: T T1 1 、T T2 2 、T T3 3 。都是根A的子樹,且本身也是一棵樹。例如: T T1 1 其根為B,兩棵子樹為 T T11 11 = F T T1212 = E, K, L , T T1212 又是一棵子樹,樹根為F,K 和 L是E的兩個互不相交的子集。442AK L ME F G H I J B C DA(a)(b)(c)431.6.2二叉樹及其基本性質(zhì)n二叉樹的特點:n(1)非空二叉樹只有一個根結(jié)點;n(2)每一個結(jié)點最多有兩棵子樹,且分別稱為該結(jié)點的左子樹與右子樹。
24、44G HD E FB CA45二叉樹的基本性質(zhì): n(1)在二叉樹的第k層上,最多有2k-1(k1)個結(jié)點;n(2)深度為m的二叉樹最多有2m-1個結(jié)點;n(3)度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個;n(4)具有n個結(jié)點的二叉樹,其深度至少為log2n+1,其中l(wèi)og2n表示取log2n的整數(shù)部分;n(5)具有n個結(jié)點的完全二叉樹的深度為log2n+1;46n滿二叉樹是指除最后一層外,每一層上的所有結(jié)點有兩個子結(jié)點,則k層上有2k-1個結(jié)點深度為m的滿二叉樹有2m-1個結(jié)點。n 完全二叉樹是指除最后一層外,每一層上的結(jié)點數(shù)均達到最大值,在最后一層上只缺少右邊的若干結(jié)點。滿二叉樹
25、和完全二叉樹 47 8 9 10 11 12 13 14 154 5 6 72 3148 8 9 10 11 12 4 5 6 72 31 7 8 94 5 6 2 31 4 5 62 31一棵滿二叉樹一定是一棵完全二叉樹,而一棵完全二叉樹不一定是滿二叉樹。491.6.3二叉樹的存儲結(jié)構(gòu)二叉樹也可以采用兩種存儲方式:順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。n1. 順序存儲結(jié)構(gòu)n這種存儲結(jié)構(gòu)適用于完全二叉樹。其存儲形式為:用一組連續(xù)的存儲單元依次自上而下、自左至右存儲完全二叉樹的結(jié)點元素,即 :按照完全二叉樹的每個結(jié)點編號的順序存放結(jié)點內(nèi)容。下面是一棵二叉樹及其相應(yīng)的存儲結(jié)構(gòu)。50abcdefghijkl完
26、全二叉樹ABCDEFGHIJKL 1 2 3 4 5 6 7 8 9 10 11 12512 鏈?zhǔn)酱鎯Y(jié)構(gòu)鏈?zhǔn)酱鎯Y(jié)構(gòu) 在在順序存儲順序存儲結(jié)構(gòu)中,利用結(jié)構(gòu)中,利用編號表示編號表示元素的位置及元素之間元素的位置及元素之間孩子或雙親的關(guān)系,因此對于非完全二叉樹,需要將空缺的孩子或雙親的關(guān)系,因此對于非完全二叉樹,需要將空缺的位置用特定的符號位置用特定的符號填補填補,若空缺結(jié)點較多,勢必造成空間利,若空缺結(jié)點較多,勢必造成空間利用率的用率的下降下降。在這種情況下,就應(yīng)該考慮使用鏈?zhǔn)酱鎯Y(jié)構(gòu)。在這種情況下,就應(yīng)該考慮使用鏈?zhǔn)酱鎯Y(jié)構(gòu)。 常見的二叉樹結(jié)點結(jié)構(gòu)如下所示:常見的二叉樹結(jié)點結(jié)構(gòu)如下所示:Lc
27、hilditemRchild521.6.4二叉樹的遍歷n所謂遍歷二叉樹就是按某種順序訪問二叉樹中的每個結(jié)點一次且僅一次的過程。這里的訪問可以是輸出、比較、更新、查看元素內(nèi)容等等各種操作。n二叉樹的遍歷方式分為:前序遍歷、中序遍歷、后序遍歷53n(1)先序遍歷n若二叉樹為空,則結(jié)束遍歷操作;否則n訪問根結(jié)點;n先序遍歷左子樹;n先序遍歷右子樹。n(2)中序遍歷n若二叉樹為空,則結(jié)束遍歷操作;否則n中序遍歷左子樹;n訪問根結(jié)點;n中序遍歷右子樹。54n(3)后序遍歷n若二叉樹為空,則結(jié)束遍歷操作;否則n后序遍歷左子樹;n后序遍歷右子樹;n訪問根結(jié)點。n下面是一棵二叉樹及其經(jīng)過三種遍歷得到的相應(yīng)序列。55G HB CAD E F先序序列:先序序列:ABDGCEFH中序序列:中序序列:DGBAECHF后序序列:后序序列:GDBEHFCA5617 查找技術(shù) n1.7.1順序查找順序查找是一種最簡單的查找方法。順序查找的使用情況:n(1)線性表為無序表;n(2)表采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。57n1.7.2二分法查找n二分法查找只適用于順序存儲的有序表。n對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備耗材儲備管理制度
- 設(shè)計公司費用管理制度
- 證書補貼規(guī)定管理制度
- 診所醫(yī)患溝通管理制度
- 診所藥品儲存管理制度
- 試劑耗材存貨管理制度
- 財務(wù)統(tǒng)計制度管理制度
- 貨物交接環(huán)節(jié)管理制度
- 貨車出車日常管理制度
- 2025年中國單色眼影行業(yè)市場全景分析及前景機遇研判報告
- NY-T 3213-2023 植保無人駕駛航空器 質(zhì)量評價技術(shù)規(guī)范
- 2023年春季內(nèi)蒙古高一化學(xué)學(xué)業(yè)水平合格性考試卷真題
- 5A景區(qū)規(guī)劃方案
- 機械制圖教案(完整版)
- 工業(yè)互聯(lián)網(wǎng)與智能制造
- 司母戊鼎的介紹
- 肺炎衣原體醫(yī)學(xué)課件
- 2024年兒童童車行業(yè)分析報告及未來發(fā)展趨勢
- 23秋國家開放大學(xué)《漢語基礎(chǔ)》期末大作業(yè)(課程論文)參考答案
- 《公務(wù)接待》課件
- 中醫(yī)內(nèi)科學(xué)消渴課件
評論
0/150
提交評論