专升本数据结构复习
數(shù)據(jù)結(jié)構(gòu)知識點(diǎn)總匯
主要參考書目:
推薦視頻:西北大學(xué) 數(shù)據(jù)結(jié)構(gòu)-耿國華老師
說明:這是本人專升本上岸一年后寫的,本篇包含知識點(diǎn)和例題總結(jié)。因為是當(dāng)時自己手碼的,所以知識點(diǎn)有冗余和順序錯位。如果發(fā)現(xiàn)有錯誤之處,歡迎評論區(qū)留言,看到后及時改正,謝謝!最后祝大家好好學(xué)習(xí),積極向上,早日上岸!
① 數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu))其4類基本結(jié)構(gòu):集合、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu) 和 網(wǎng)狀結(jié)構(gòu)。
② 物理結(jié)構(gòu)(存儲結(jié)構(gòu))其4種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu)、索引存儲結(jié)構(gòu) 和 散列存儲結(jié)構(gòu)。
③ 算法5個重要特性:有窮性、確定性、可行性、輸入 和 輸出。
?? 通常從四個方面評價算法的質(zhì)量:正確性、易讀性、強(qiáng)壯性 和 高效率。
④ 線性表是由n≥0個數(shù)據(jù)元素組成的 有限序列。其特點(diǎn)為邏輯關(guān)系上相鄰的兩個元素在物理位置上也相鄰。
⑤ 在順序表中實現(xiàn)的基本運(yùn)算:
??插入:平均移動結(jié)點(diǎn)次數(shù)為 n/2;平均時間復(fù)雜度均為O(n)。
??刪除:平均移動結(jié)點(diǎn)次數(shù)為 (n-1)/2;平均時間復(fù)雜度均為O(n)。
⑥ 存儲位置計算:每個元素需占用L個存儲單元第一個單元的存儲地址作為數(shù)據(jù)元素的存儲位置線性表的第i個數(shù)據(jù)元素ai的存儲位置為LOC(ai)=LOC(a1)+(i-1)*L ,a1的存儲位置,通常稱做線性表的起始位置或基地址。
⑦ 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu):數(shù)據(jù)元素ai的存儲映像稱為結(jié)點(diǎn),包括2個域:存數(shù)據(jù)的 數(shù)據(jù)域、存后繼存儲位置的 指針域。
⑧ 線性鏈表(單鏈表)特點(diǎn):每個結(jié)點(diǎn)只包含1個指針域。在單鏈表的第一個結(jié)點(diǎn)之前附設(shè)的一個結(jié)點(diǎn),稱之為 頭結(jié)點(diǎn)。
⑨ 假設(shè)L是LinkList型變量,則L為單鏈表的頭指針,它指向表中第一個結(jié)點(diǎn)。
??L->next 為第一個結(jié)點(diǎn)地址,L->next=NULL為 空表。
??回收結(jié)點(diǎn):free(q)。
⑩ 棧:是限定僅在 棧頂(表尾)進(jìn)行插入或刪除操作 的線性表。表頭端稱為棧底,不含有元素的空表稱為空棧;棧又稱為 后進(jìn)先出 的線性表。
? 隊列:是一種 先進(jìn)先出 的線性表,它只允許在表的一端進(jìn)行插入,而另一端刪除元素。允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。
? 鏈隊列:用鏈表示的隊列。一個隊列需要頭指針和尾指針才能確定唯一。
⑩ 棧:是限定僅在 棧頂(表尾)進(jìn)行插入或刪除操作 的線性表。表頭端稱為棧底,不含有元素的空表稱為空棧;棧又稱為 后進(jìn)先出 的線性表。
? 隊列:是一種 先進(jìn)先出 的線性表,它只允許在表的一端進(jìn)行插入,而另一端刪除元素。允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。
? 鏈隊列:用鏈表示的隊列。一個隊列需要頭指針和尾指針才能確定唯一。
? 循環(huán)隊列:兩個指針front指示隊列頭元素和rear指示隊列尾元素的位置。初始化建空隊列時,令front = rear = 0,每當(dāng)插入新的隊列尾元素時,“尾指針增1”;每當(dāng)刪除隊列頭元素時,“頭指針增1”。
? 串:是由零個或多個字符組成的有限序列。
? 數(shù)組的存儲位置計算:假設(shè)每個數(shù)據(jù)元素需占用L個存儲單元,則二維數(shù)組A中任一元素A[ij]的存儲位置可由下式確定:
??以行序為主序的存儲結(jié)構(gòu):LOC(i,j)=LOC(0,0)+(n*i+j)*L;(n為行數(shù))
??以列序為主序的存儲結(jié)構(gòu):LOC(i,j)=LOC(0,0)+(n*j+i)*L;(n為列數(shù))
? 廣義表:是線性表的推廣,在廣義表的定義中,ai可以是單個元素,也可以是廣義表,分別稱為廣義表LS的原子和子表。
? 二叉樹的性質(zhì):
??性質(zhì)1:在二叉樹的第K層上至多有 2k-1 個結(jié)點(diǎn)(K≥1)。
??性質(zhì)2:深度為k的二叉樹至多 2k-1 個結(jié)點(diǎn)(k≥1)。
??????深度為k的二叉樹至少有k個結(jié)點(diǎn)(k≥1)。
??????深度為k的完全二叉樹至少有 2k-1 個結(jié)點(diǎn)(k≥1)。
??性質(zhì)3:對任何一棵二叉樹T,如果其終端結(jié)點(diǎn)數(shù)為N0,度為2的結(jié)點(diǎn)數(shù)為N2,則 N0=N2+1。總結(jié)點(diǎn)個數(shù) N=N0+N1+N2。
??性質(zhì)4:具有n個結(jié)點(diǎn)的完全二叉樹的深度為 [log2n]+1。
? 滿二叉樹:一顆深度為k且有 2的k次方減1個結(jié)點(diǎn)的二叉樹。
? 完全二叉樹:深度為k的,有n個結(jié)點(diǎn)的二叉樹,當(dāng)且僅當(dāng)其每一個結(jié)點(diǎn)都與深度為k的滿二叉樹中編號從1至n的結(jié)點(diǎn)一一對應(yīng)。
? 樹轉(zhuǎn)換成二叉樹:連兄弟,留長子,刪孩子。
??注意:由于樹根沒有兄弟結(jié)點(diǎn),固樹轉(zhuǎn)換為二叉樹后,二叉樹根結(jié)點(diǎn)的右子樹必為空。
① 森林轉(zhuǎn)換成二叉樹:連樹根及兄弟,留長子,刪孩子。
② 二叉樹轉(zhuǎn)換成樹:連左孩子的右孩子及其右孩子…,刪原樹右孩子。
③ 赫夫曼樹:又稱最優(yōu)樹,是一類帶權(quán)路徑長度最短的樹。
WPL=23+43+52+71=35
④ 赫夫曼編碼:在赫夫曼樹上,左分支代表0,右分支代表1。由根結(jié)點(diǎn)到指定結(jié)點(diǎn)的路徑(從上到下把0、1連起來),就是該結(jié)點(diǎn)的赫夫曼編碼;如上圖(d)中a為0,b為10,c為110,d為111。
⑤無向完全圖:有 n(n-1)/2 條邊的無向圖。
?有向完全圖:有 n(n-1) 條邊的有向圖。
⑥鄰接矩陣:無向圖的鄰接矩陣關(guān)于主對角線對稱,在整個矩陣中非零元素的個數(shù)等于邊個數(shù)的2倍,第i行和第i列中非零元素的個數(shù)等于該結(jié)點(diǎn)的度。
⑦ 鄰接表:無向圖的鄰接矩陣關(guān)于主對角線對稱,在整個矩陣中非零元素的個數(shù)等于邊個數(shù)的2倍,第i行和第i列中非零元素的個數(shù)等于該結(jié)點(diǎn)的度。
⑧ 深度優(yōu)先遍歷:
⑨ 廣度優(yōu)先遍歷:
⑩ 最小生成樹:
普里姆算法(Prim):連相鄰權(quán)值最小的。
克魯斯卡爾算法(Kruskal):先連權(quán)值最小的,再依次連。
? 拓?fù)渑判?#xff1a;由某個集合上的一個偏序得到該集合上的一個全序的操作。
?順序查找法平均查找長度:ASL=(n+1)/2。
?折半查找法(二分查找法)平均查找長度:ASL=(n+1)/n*log2(n+1)-1
?索引順序表查找法(分塊查找法)平均查找長度:ASL≈log2(n/s+1)+s/2。
? 直接插入排序:將一個記錄插入到已排好序的有序表中,從而得到一個新的、記錄數(shù)增1的有序表。
? 冒泡排序:首先將一個記錄的關(guān)鍵字和第二個記錄的關(guān)鍵字進(jìn)行比較,若為逆序(即L.r[1].key>L.r[2].key),則將兩個記錄交換之,然后比較第二個記錄和第三個記錄的關(guān)鍵字。以此類推,直至第n-1個記錄和第n個記錄的關(guān)鍵字進(jìn)行過比較為止。
? 快速排序:通過一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可分別對這兩部分記錄繼續(xù)進(jìn)行排序,以達(dá)到整個序列有序。
① 順序表是隨機(jī)存儲結(jié)構(gòu),當(dāng)線性表的操作 主要是查找時,宜采用以插入和刪除操作為主的線性表宜采用 鏈表 做存儲結(jié)構(gòu)。若 插入和刪除主要發(fā)生在表的首尾兩端,則宜采用尾指針表示的單循環(huán)鏈表。
② 在順序棧中有“上溢”和“下溢”的現(xiàn)象,“上溢”是棧頂指針指出棧的外面是出錯狀態(tài),“下溢”可以表示棧為空棧,因此用來作為控制轉(zhuǎn)移的條件。
③ 隊列 是一種運(yùn)算受限的線性表,允許刪除的一端稱為隊頭(front),允許插入的一端稱為隊尾(rear) ,隊列的操作原則是先進(jìn)先出的,又稱作FIFO表。隊列也有順序存儲和鏈?zhǔn)酱鎯煞N存儲結(jié)構(gòu)。
④循環(huán)隊列:判定循環(huán)隊列是空還是滿,方法有三種:
?一種是另設(shè)一個布爾變量來判斷;
?第二種是少用一個元素空間,入隊時先測試((rear+1)%m = front)? 滿:空;
?第三種就是用一個計數(shù)器記錄隊列中的元素的總數(shù)。
⑤ 隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)稱為鏈隊列,為了便于在表尾進(jìn)行插入(入隊)的操作,在表尾增加一個尾指針,一個鏈隊列就由一個頭指針和一個尾指針唯一地確定。鏈隊列不存在隊滿和上溢的問題。
在鏈隊列的出隊算法中,要注意當(dāng)原隊中只有一個結(jié)點(diǎn)時,出隊后要同進(jìn)修改頭尾指針并使隊列變空。
⑥ 串是零個或多個字符組成的有限序列。
?空串:是指長度為零的串,也就是串中不包含任何字符(結(jié)點(diǎn))
?空白串:指串中包含一個或多個空格字符的串。
⑦ 子串在主串中的序號就是指子串在主串中首次出現(xiàn)的位置。空串是任意串的子串,任意串是自身的子串。
⑧ 串的基本運(yùn)算有:
?求串長strlen(char*s) 串復(fù)制strcpy(char*to,char*from)
?字符定位strchr(char*s,charc) 串聯(lián)接strcat(char*to,char*from)
?串比較charcmp(char*s1,char*s2)
⑨地址的計算方法:
?按行優(yōu)先順序排列的數(shù)組:LOCa(ij)=LOCa(11)+((i-1)*n+(j-1))*d
?按列優(yōu)先順序排列的數(shù)組:LOCa(ij)=LOCa(11)+((j-1)*n+(i-1))*d
⑩圖的存儲結(jié)構(gòu):
?鄰接矩陣表示法:用一個n階方陣來表示圖的結(jié)構(gòu)是唯一的;無向圖中鄰接矩陣是對稱的;有向圖中行是出度,列是入度。
?鄰接表表示法:用頂點(diǎn)表和鄰接表構(gòu)成不是唯一的;頂點(diǎn)表結(jié)構(gòu) vertex | firstedge,指針域存放鄰接表頭指針;鄰接表是用頭指針確定。
?圖的遍歷:
?深度優(yōu)先遍歷:借助于鄰接矩陣的列。使用棧保存已訪問結(jié)點(diǎn)。
?廣度優(yōu)先遍歷:借助于鄰接矩陣的行。使用隊列保存已訪問結(jié)點(diǎn)。
? 直接插入排序:
? 直接選擇排序:
? 冒泡排序:
? 快速排序:
① n個結(jié)點(diǎn)的二叉樹共有 2n 個指針域,其中有 n-1 個指針域是存放了地址,有 n+1 個指針是空指針。
② 在一個具有n個頂點(diǎn)的無向完全圖中,包含有 e 條邊,在一個具有n個頂點(diǎn)的有向完全圖中,包含有 2e 條邊。
③ 在堆排序的過程中,對任一分支結(jié)點(diǎn)進(jìn)行篩運(yùn)算的時間復(fù)雜度為 O(log2n),整個堆排序過程的時間復(fù)雜度為 O(nlog2n)。
④ AOV網(wǎng)是一種 有向無回路 的圖。
⑤ 設(shè)哈夫曼樹中的葉子結(jié)點(diǎn)總數(shù)為m,若用二叉鏈表作為存儲結(jié)構(gòu),則該哈夫曼樹中總共有 2m 個空指針域。(m個葉子節(jié)點(diǎn)的哈夫曼樹總共有2m-1個節(jié)點(diǎn))
⑥ 設(shè)順序循環(huán)隊列Q[0:M-1]的頭指針和尾指針分別為F和R,頭指針F總是指向隊頭元素的前一位置,尾指針R總是指向隊尾元素的當(dāng)前位置,則該循環(huán)隊列中的元素個數(shù)為 (R-F+M)%M。
⑦ 快速排序的最壞時間復(fù)雜度為 O(n2),平均時間復(fù)雜度為 O(nlog2n)。
⑧ 數(shù)據(jù)的物理結(jié)構(gòu)主要包括 順序存儲結(jié)構(gòu) 和 鏈?zhǔn)酱鎯Y(jié)構(gòu) 兩種情況。
⑨ 二分查找的過程可以用一棵二叉樹來描述,該二叉樹稱為二叉判定樹。在有序表上進(jìn)行二分查找時的查找長度 不超過 二叉判定樹的高度 1+log2n。
⑩ 設(shè)有n個無序的記錄關(guān)鍵字,則直接插入排序的時間復(fù)雜度為 O(n2),快速排序的平均時間復(fù)雜度為 O(nlog2n)。
? 設(shè)指針變量p指向雙向循環(huán)鏈表中的結(jié)點(diǎn)X,則刪除結(jié)點(diǎn)X需要執(zhí)行的語句序列為 p>llink->rlink=p->rlink ; p->rlink->llink=p->rlink(設(shè)結(jié)點(diǎn)中的兩個指針域分別為llink和rlink)。
? 設(shè)有一個順序循環(huán)隊列中有M個存儲單元,則該循環(huán)隊列中最多能夠存儲 m-1 個隊列元素;當(dāng)前實際存儲 (R-F+M)%M 個隊列元素(設(shè)頭指針F指向當(dāng)前隊頭元素的前一個位置,尾指針指向當(dāng)前隊尾元素的位置)。
? 設(shè)某無向圖G中有n個頂點(diǎn),用鄰接矩陣A作為該圖的存儲結(jié)構(gòu),則頂點(diǎn)i和頂點(diǎn)j互為鄰接點(diǎn)的條件是 A[i][j]=1。
? 數(shù)據(jù)項是不可分割的構(gòu)成數(shù)據(jù)元素的最小單位;數(shù)據(jù)元素是數(shù)據(jù)的基本單位。
? 設(shè)一個有序的單鏈表中有n個結(jié)點(diǎn),現(xiàn)要求插入一個新結(jié)點(diǎn)后使得單鏈表仍然保持有序,則該操作的時間復(fù)雜度為 O(n)。
兩方面:一是插入時間復(fù)雜度O(1);二是保持有序時間復(fù)雜度O(n)
? 設(shè)一棵m叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為Nl,……,度數(shù)為m的結(jié)點(diǎn)數(shù)為Nm,則N0= l+N2+2N3+3N4+……+(m-1)Nm。
【注解】由2叉樹的性質(zhì)引申出,對于任何一顆樹T,如果其終端結(jié)點(diǎn)樹為n0 度為i的結(jié)點(diǎn)數(shù)為ni,則n0=1+n2+2n3+···+(i-1)ni
? 設(shè)有一個順序共享棧S[0:n-1],其中第一個棧項指針top1的初值為-1,第二個棧頂指針top2的初值為n,則判斷共享棧滿的條件是 top1+1=top2。
? 在圖的鄰接表中用順序存儲結(jié)構(gòu)存儲表頭結(jié)點(diǎn)的優(yōu)點(diǎn)是 可以隨機(jī)訪問到任一個頂點(diǎn)的簡單鏈表。
?設(shè)一條單鏈表的頭指針變量為head且該鏈表沒有頭結(jié)點(diǎn),則其判空條件是 head==0。
?不帶頭結(jié)點(diǎn)是 head==NULL,帶頭結(jié)點(diǎn)是 head->next==NULL
?設(shè)帶有頭結(jié)點(diǎn)的單向循環(huán)鏈表的頭指針變量為head,則其判空條件是 head->next==head。
? 設(shè)二叉樹的先序遍歷序列和后序遍歷序列正好相反,則該二叉樹滿足的條件是 只有一個孩子節(jié)點(diǎn)(或 高度等于其結(jié)點(diǎn)數(shù))。
① 設(shè)指針變量front表示鏈?zhǔn)疥犃械年狀^指針,指針變量rear表示鏈?zhǔn)疥犃械年犖仓羔?#xff0c;指針變量s指向?qū)⒁腙犃械慕Y(jié)點(diǎn)X,則入隊列的操作序列為 rear->next=s ;rear=s。(注意:入隊要從隊尾入)
② 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的新結(jié)點(diǎn)X,則進(jìn)行插入操作的語句序列為 s->next=p->next ; p->next=s(設(shè)結(jié)點(diǎn)的指針域為next)。
③ 設(shè)F和R分別表示順序循環(huán)隊列的頭指針和尾指針,則判斷該循環(huán)隊列為空的條件為 F==R
④ 設(shè)二叉樹中結(jié)點(diǎn)的兩個指針域分別為lchild和rchild,則判斷指針變量p所指向的結(jié)點(diǎn)為葉子結(jié)點(diǎn)的條件是
p->lchild==NULL && p->rchild==NULL。
⑤ 散列表中解決沖突的兩種方法是 開放定址法 和 鏈地址法。
⑥ 設(shè)指針變量top指向當(dāng)前鏈?zhǔn)綏5臈m?#xff0c;則刪除棧頂元素的操作序列為 top=top->next;
?若指針變量top指向當(dāng)前順序棧的棧頂,則刪除棧頂元素的操作序列為 top=top-1
⑦ 設(shè)指針變量p指向雙向鏈表中的結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X的操作序列為
s->left=p;s->right=p->right;p->right=s; p->right->left=s;
(設(shè)結(jié)點(diǎn)中的兩個指針域分別為left和right)。
⑧ 解決散列表沖突的兩種方法是 開放定址法 和 鏈地址法。
⑨ 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X需要執(zhí)行的語句序列:s->next=p->next ; p->next=s 。
⑩ 設(shè)指針變量head指向雙向鏈表中的頭結(jié)點(diǎn),指針變量p指向雙向鏈表中的第一個結(jié)點(diǎn),則指針變量p和指針變量head之間的關(guān)系是p=head->rlink 和head=p->llink(設(shè)結(jié)點(diǎn)中的兩個指針域分別為llink和rlink)。
? 設(shè)指針變量p指向雙向鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X的操作序列為
s->left=p;s->right=p->right;p->right->left=s; p->right=s;。
? 設(shè)散列表中有m個存儲單元,散列函數(shù)H(key)= key % p,則p最好選擇 小于等于m的最大素數(shù)。
?設(shè)順序線性表的長度為30,分成5塊,每塊6個元素,如果采用分塊查找,則其平均查找長度為 6.5。
?設(shè)分塊查找中將長為 n 的表分成均等的 b 個塊,每塊 s 個元素,則 b = (n / s)上取整。
?如果索引表中采用順序查找,則ASL=(b+1)/2+(s+1)/2;
?如果索引表中采用折半查找,則ASL=(s+1)/2+log2(b+1)-1;
? 設(shè)指針p指向單鏈表中結(jié)點(diǎn)A,指針s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的前面插入結(jié)點(diǎn)X時的操作序列為:
?設(shè)某鏈表中最常用的操作是在鏈表的尾部插入或刪除元素,則選用下列 雙向循環(huán)鏈表 存儲方式最節(jié)省運(yùn)算時間。
?如果只是插入元素,單向循環(huán)列表就可以了;
?如果還需要刪除元素,就要雙向循環(huán)列表,可以最快的找到尾節(jié)點(diǎn)的前一個節(jié)點(diǎn)。
? 有N個關(guān)鍵字排序,各排序最大最小情況如下:
? 快速排序算法的平均時間復(fù)雜度為 O(nlog2n),直接插入排序算法的平均時間復(fù)雜度為 O(n^2)。
? 設(shè)一棵m叉樹脂的結(jié)點(diǎn)數(shù)為n,用多重鏈表表示其存儲結(jié)構(gòu),則該樹中有 n(m-1)+1 個空指針域。
【注解】m叉樹n個結(jié)點(diǎn),得出總的指針域為m*n,不為空的指針域就等于分枝數(shù),根結(jié)點(diǎn)沒有分支指向它,推出非空指針域為n-1,總指針域減非空指針域就等于空的指針域即m*n-(n-1)
? 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,則刪除結(jié)點(diǎn)A的語句序列為:
q=p->next;p->data=q->data;p->next= q->next;feee(q);
① 數(shù)據(jù)結(jié)構(gòu)從邏輯上劃分為三種基本類型:線性結(jié)構(gòu),樹型結(jié)構(gòu) 和 圖型結(jié)構(gòu)。
② 設(shè)無向圖G中有n個頂點(diǎn)e條邊:則用鄰接矩陣作為圖的存儲結(jié)構(gòu)進(jìn)行深度優(yōu)先或廣度優(yōu)先遍歷時的時間復(fù)雜度為 O(n^2);
?用鄰接表作為圖的存儲結(jié)構(gòu)進(jìn)行深度優(yōu)先或廣度優(yōu)先遍歷的時間復(fù)雜度為 O(n+e)。
③ 鄰接表是圖的一種 鏈?zhǔn)酱鎯Y(jié)構(gòu)。
④ 樹最適合用來表示 元素之間具有分支層次關(guān)系的數(shù)據(jù)。
⑤ 在一個單鏈表中,若要刪除由指針q所指向結(jié)點(diǎn)的后繼結(jié)點(diǎn)(若存在),則執(zhí)行 p=q->next;q->next=p->next 操作。
⑥ 常對數(shù)組進(jìn)行的兩種基本操作是 索引 和 修改。
⑦ 在一個單鏈表中,已知q所指結(jié)點(diǎn)是p所指結(jié)點(diǎn)的直接前驅(qū),若在q和p之 間插入s所指結(jié)點(diǎn),則執(zhí)行 q->next=s;?s->next=p 操作。
⑧ 設(shè)有兩個串p和q,求q在p中首次出現(xiàn)的位置的運(yùn)算稱作 模式匹配。
⑨ 一個高度為h的滿二叉樹共有n個結(jié)點(diǎn),其中有m個葉子結(jié)點(diǎn),則有
n=2m-1 成立。
⑩ 實現(xiàn)圖的廣度優(yōu)先搜索遍歷算法需要使用 隊列,深度優(yōu)先搜索遍歷算法需要使用 棧。
? 順序表中邏輯上相鄰的元素的物理位置必定相鄰。單鏈表中邏輯上相鄰的元素的物理位置不一定相鄰。
? 樹的先序?qū)?yīng)二叉樹的先序,樹的后序?qū)?yīng)二叉樹的中序。
? 在?n(n>0)?個元素的順序棧中刪除1個元素的時間復(fù)雜度為:?O(1)。
?
?設(shè)?SQ?為循環(huán)隊列,存儲在數(shù)組?d[m]?中,則?SQ?出隊操作對其隊頭指針?front?的 修改是?front?=?(front+1)%m??。
?對于一個以順序?qū)崿F(xiàn)的循環(huán)隊列Q[0…m-1],隊頭、隊尾指針分別為f、r,其判空的條件是?r=f,判滿的條件是 (r+1)%m=f。
① 設(shè)計一個判別表達(dá)式中括號是否匹配出現(xiàn)的算法,采用 棧 的數(shù)據(jù)結(jié)構(gòu)最佳。
② 設(shè)廣義表L=((a,b,c)),則L的長度為1,深度為2。
③ 衡量查找算法效率的主要標(biāo)準(zhǔn)是 平均查找長度。
④ 棧和隊列都是 限制存取點(diǎn)的線性結(jié)構(gòu)。
⑤ 在稀疏矩陣的三元組順序表中,每個三元組表示 矩陣中非零元素的行號、列號和數(shù)據(jù)值。
⑥ 順序結(jié)構(gòu)邏輯上相鄰的結(jié)點(diǎn)物理上也是相鄰的。因此,其存儲密度大,存儲空間利用串高。
⑦ 含有n個結(jié)點(diǎn)的二叉樹采用二叉鏈表存儲時,空指針域的個數(shù)為 n+1,非空指針個數(shù)為 n-1。
⑧ 在數(shù)據(jù)結(jié)構(gòu)中,從存儲結(jié)構(gòu)上可以將之分為 順序存儲和非順序存儲;從邏輯結(jié)構(gòu)上可以將之分為 線性結(jié)構(gòu)和非線性結(jié)構(gòu)。
⑨ 深度優(yōu)先遍歷類似二叉樹的 先序遍歷;廣度優(yōu)先遍歷類似二叉樹的 層次遍歷。
⑩ n個頂點(diǎn)的有向圖最多有 n(n-1)條邊;無向圖最多有 n(n-1)/2 條邊。
? 如果要求用線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,則可采用 分塊查找。
? 任意一棵二叉樹的葉子結(jié)點(diǎn)在其先序、中序和后序序列中的相對位置 不發(fā)生變化。
? 在單鏈表指針為p的結(jié)點(diǎn)之后插入指針為s的結(jié)點(diǎn),正確的操作是 s->next=p->next;p->next=s。
? 某算法的時間復(fù)雜度是O(n^2),表明該算法的 執(zhí)行時間與n^2成正比。
? 對于一個具有n個頂點(diǎn)和e條邊的無向圖,若采用鄰接表表示,則表頭向量的大小為 n,占用的存儲空間為 2e。
? 對于順序表,訪問某結(jié)點(diǎn)的時間復(fù)雜度為 O(1),刪除某結(jié)點(diǎn)的時間復(fù)雜度為 O(n)。
? 以數(shù)據(jù)集{4,5,6,7,10,12,18}為結(jié)點(diǎn)權(quán)值,畫出構(gòu)造的哈弗曼樹,并計算其帶權(quán)路徑長度。
?廣義表(a,(b,c),d,e)的表頭為 a。
?已知廣義表L=(a,(b,(c,(d)), e), f ),則:
?L1=Tail(L)=((b,(c,(d)), e), f )
?L2=Head(L1)= (b,(c,(d)), e)
?L3=Tail(L2)=((c,(d)), e)
?L4=Head(L3)=(c,(d))
?L5=Head(L4)= c
? 樹最適合用來表示的結(jié)構(gòu)是 元素間具有分支層次關(guān)系的結(jié)構(gòu)。
? 圖G是一個非連通無向圖,共有28條邊,則該圖至少有 9 個頂點(diǎn)。
① 棧的特點(diǎn)是 一個線性結(jié)構(gòu),數(shù)據(jù)先進(jìn)后出,且只能在棧頂進(jìn)行增刪操作。
② 與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個數(shù)無關(guān)的是數(shù)據(jù)的 邏輯結(jié)構(gòu)。
③ 數(shù)據(jù)結(jié)構(gòu)被形式定義為(D, R),其中D是 數(shù)據(jù)元素 的有限集合,R是D上的 關(guān)系 有限集合。
④ 當(dāng)利用大小為N的數(shù)組順序存儲一個棧時,假定用top= =N表示棧空,則向這個棧插入一個元素時,首先應(yīng)執(zhí)行 top-- 語句修改top指針。
⑤ 設(shè)有一個字符串S=“abcdefgh”,問該串的最大子串個數(shù)為 37。
⑥ 若StrIndex(S,T)表示求T在S中的位置的操作,則對于S=“Beijing and Nanjing”,T=“jing”,StrIndex(S,T)的結(jié)果為4。
⑦ 字符串按存儲方式可以分為:順序存儲、鏈接存儲和 堆分配存儲。
⑧ 在C語言中,以字符 \0表示串值的終結(jié)。
⑨ A[N, N]是對稱矩陣,將下三角(含對角線)以行序存儲到一維數(shù)組arr[N(N+1)/2]中,則對任一上三角元素arr[i, j]對應(yīng)arr[k]的下標(biāo)k是:解析如下
⑩ 有一個100*90的稀疏矩陣,非零元素有10個,設(shè)每個整型數(shù)占2個字節(jié),則用三元組表示該矩陣時,所需的字節(jié)數(shù)是 66。
? 已知廣義表LS=((a, b, c),(d, e, f)),對其運(yùn)用Head和Tail運(yùn)算,取出其中原子e的運(yùn)算是 Head(Tail(Head(Tail(LS))))
? 畫出廣義表((((a),b)),(((), d),(e,f)))的鏈?zhǔn)酱鎯Y(jié)構(gòu)圖示。
? 引入二叉線索樹的目的是 加快查找結(jié)點(diǎn)的前驅(qū)或后繼的速度。
? 利用二叉鏈表存儲一般樹,則根結(jié)點(diǎn)的右指針是 空;因為左孩子右兄弟,根節(jié)點(diǎn)無兄弟。
? 深度優(yōu)先遍歷類似于二叉樹的 先序遍歷;廣度優(yōu)先遍歷類似于二叉樹的 層次遍歷。
? 用鄰接表表示圖進(jìn)行廣度優(yōu)先遍歷時,通常借助 隊列 來實現(xiàn)算法。
用鄰接表表示圖進(jìn)行深度優(yōu)先遍歷時,通常借助 棧 來實現(xiàn)算法。
? 拓?fù)渑判?方法可以判斷出一個有向圖是否有環(huán)。
? 圖中的一條路徑長度為k,該路徑所含的頂點(diǎn)數(shù)為 K+1。
? 數(shù)據(jù)的最小單位是 數(shù)據(jù)項。
? 設(shè)一個有序的單鏈表中有 n 個結(jié)點(diǎn), 現(xiàn)要求插入一個新結(jié)點(diǎn)后使得單鏈表仍然保持有序, 則該操作的時間復(fù)雜度為 O(n)。
① 在圖的鄰接表中用順序存儲結(jié)構(gòu)存儲表頭結(jié)點(diǎn)的優(yōu)點(diǎn)是 可以隨機(jī)訪問到任意點(diǎn)的簡單鏈表。
② 設(shè)一棵 m叉樹中度數(shù)為 0 的結(jié)點(diǎn)數(shù)為 N0,度數(shù)為 1 的結(jié)點(diǎn)數(shù)為 Nl,……,度數(shù)為 m的結(jié) 點(diǎn)數(shù)為 Nm,則 N0= l+N 2+2N3+3N4+…… +(m-1)Nm 。
③ 設(shè)有一個 n 階的下三角矩陣 A,如果按照行的順序?qū)⑾氯蔷仃囍械脑?#xff08;包括對角線 上元素)存放在 n(n+1) 個連續(xù)的存儲單元中,則 A[i][j] 與 A[0][0] 之間有 i*(i+1)/2+j -1或i*(i+1)/2+i個數(shù)據(jù)元素。
④設(shè)一條單鏈表的頭指針變量為 head且該鏈表沒有頭結(jié)點(diǎn),則其判空條件是 head==0。
head為指向表頭結(jié)點(diǎn)的指針,分別寫出帶有頭結(jié)點(diǎn)的單鏈表、單項循環(huán)鏈表和雙向循環(huán)鏈表判空的條件:
單鏈表 NULL==head->next
單向循環(huán) head==head->next
雙向循環(huán) head==head->next&&head==head->prior
⑤ head為指向表頭結(jié)點(diǎn)的指針,分別寫出不帶有頭結(jié)點(diǎn)的單鏈表、單項循環(huán)鏈表和雙向循環(huán)鏈表判空的條件:
單鏈表 NULL==head
單向循環(huán) head==head->next
雙向循環(huán) head==head->next&&head==head->prior
⑥ 設(shè)F和R分別表示順序循環(huán)隊列的頭指針和尾指針,則判斷該循環(huán)隊列為空的條件為F==R。
⑦ 散列表中解決沖突的兩種方法是 開放地址法 和 鏈接法。
⑧ 設(shè)指針變量 top 指向當(dāng)前鏈?zhǔn)綏5臈m?#xff0c;則刪除棧頂元素的操作序列為 top=top->next。
⑨ 設(shè)關(guān)鍵字序列為 (Kl ,K2,?, K n) ,則用篩選法建初始堆必須從第 n/2 個元素開始進(jìn)行篩選。
⑩ 建立一個長度為 n 的有序單鏈表的時間復(fù)雜度為 O(n^2)。
? 設(shè)順序表的長度為 n,則順序查找的平均比較次數(shù)為 (n+1)/2。
? 設(shè)順序線性表的長度為 30,分成 5 塊,每塊 6 個元素,如果采用分塊查找,則其平均查 找長度為 6.5。
? 在堆排序中,對n個記錄建立初始堆需要調(diào)用 n/2 次調(diào)整算法。
? 已知一棵完全二叉樹中共有768結(jié)點(diǎn),則該樹中共有 384 個葉子結(jié)點(diǎn)。
? 一個一維數(shù)組a[10]中存儲著有序表(15,26,34,39,45,56,58,63,74,76),根據(jù)折半搜索所對應(yīng)的判定樹,寫出該判定樹中度為1的結(jié)點(diǎn)個數(shù),并求出在等概率情況下進(jìn)行成功搜索時的平均搜索長度。度為1的結(jié)點(diǎn)個數(shù):3;平均搜索長度:29/10。
? 一維數(shù)組中有n個數(shù)組元素,則讀取第i個數(shù)組元素的平均時間復(fù)雜度為 O(1)。
解析:數(shù)組是隨機(jī)訪問的數(shù)據(jù)結(jié)構(gòu),平均時間復(fù)雜度為O(1)
? 含n個頂點(diǎn)的無向連通圖中至少含有 n-1 條邊。
? 順序表中,邏輯上相鄰的元素,其物理位置也相鄰,在鏈表中,邏輯上相鄰的元素,其物理位置不一定相鄰。
? 利用三元組表存放稀疏矩陣中的非零元素,則在三元組表中每個三元組元素對應(yīng)一個非零元素的行號、列號和 值。
? 數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯關(guān)系上描述數(shù)據(jù),它與數(shù)據(jù)的 存儲(或存儲結(jié)構(gòu)) 無關(guān),是獨(dú)立于計算機(jī)的。
① 區(qū)分循環(huán)隊列的滿與空,有三種方法,它們是 少用一個存儲單元、設(shè)置一個標(biāo)志位 和 設(shè)置一個計數(shù)器。
② 根據(jù)線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中每一個結(jié)點(diǎn)包含的指針個數(shù),將線性鏈表分成 單鏈表和雙鏈表。
③ 數(shù)據(jù)結(jié)構(gòu)中評價算法的兩個重要指標(biāo)是 時間復(fù)雜度 和 空間復(fù)雜度。
④ 最大容量為n的循環(huán)隊列,隊尾指針是rear,隊頭是front,則隊空的條件是 rear==front;隊滿條件是 (rear+1)%n==front;當(dāng)前隊列中的元素個數(shù)為 (rear-front+n)%n。
⑤ 一個遞歸算法必須包括 終止條件和遞歸部分。
⑥ 循環(huán)隊列存儲在數(shù)組A[0…m]中,則入隊時的操作為 rear=(rear+1) mod (m+1)。
⑦ 設(shè)計一個判別表達(dá)式中左,右括號是否配對出現(xiàn)的算法,采用 棧 數(shù)據(jù)結(jié)構(gòu)最佳。
⑧元素的移動次數(shù)與關(guān)鍵字的初始排列次序無關(guān)的是:基數(shù)排序
?元素的比較次數(shù)與初始序列無關(guān)是:選擇排序
?算法的時間復(fù)雜度與初始序列無關(guān)的是:直接選擇排序
⑨ 若一個棧以向量V[1…n]存儲,初始棧頂指針top為n+1,則下面x進(jìn)棧的正確操作是:top=top-1; V[top]=x。
⑩ 利用帶頭結(jié)點(diǎn)的二叉鏈表存儲樹,則根結(jié)點(diǎn)的右指針是 空。二叉鏈表:左孩子右兄弟,根節(jié)點(diǎn)沒有兄弟,所以為空 。
? 設(shè)二叉排序樹的高度為h,則在該樹中查找關(guān)鍵字key最多需要比較 h次。
? 入棧操作和入隊列操作在鏈?zhǔn)酱鎯Y(jié)構(gòu)上實現(xiàn)時不需要考慮棧溢出的情況。正確,鏈?zhǔn)酱鎯Y(jié)構(gòu)是動態(tài)分配空間的。
? 用鄰接矩陣作為圖的存儲結(jié)構(gòu)時,則其所占用的存儲空間與圖中頂點(diǎn)數(shù)有關(guān)。圖的鄰接矩陣存儲所占用空間大小只與頂點(diǎn)個數(shù)有關(guān),更準(zhǔn)確地說,設(shè)頂點(diǎn)n個,則與n^2成正比
? 設(shè)一維數(shù)組中有n個數(shù)組元素,則讀取第i個數(shù)組元素的平均時間復(fù)雜度為 O(1)。
? 堆是完全二叉樹,完全二叉樹不一定是堆。
? 不論線性表采用順序存儲結(jié)構(gòu)還是鏈?zhǔn)酱鎯Y(jié)構(gòu),刪除值為X的結(jié)點(diǎn)的時間復(fù)雜度均為O(n)。
? 設(shè)一組初始記錄關(guān)鍵字序列(k1,k2,……,kn)是堆,則對i=1,2,…,n/2而言滿足的條件為 ki<=k2i && ki<=k2i+1。
? 設(shè)一組初始記錄關(guān)鍵字序列為(345,253,674,924,627),則用基數(shù)排序需要進(jìn)行3趟的分配和回收才能使得初始關(guān)鍵字序列變成有序序列。
? 設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過 log2n+1。
? 畫出廣義表LS=(( ) , (e) , (a , (b , c , d )))的頭尾鏈表存儲結(jié)構(gòu)。
21 設(shè)散列表的地址范圍是[ 0…9 ],散列函數(shù)為H(key)= (key 2 +2)MOD 9,并采用鏈表處理沖突,請畫出元素7、4、5、3、6、2、8、9依次插入散列表的存儲結(jié)構(gòu)。
H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6
① 二分查找的過程可以用一棵二叉樹來描述,該二叉樹稱為二叉判定樹。在有序表上進(jìn)行二分查找時的查找長度不超過二叉判定樹的高度1+log2n。
② 設(shè)某鏈表中最常用的操作是在鏈表的尾部插入或刪除元素,則選用下列 雙向循環(huán)鏈表 存儲方式最節(jié)省運(yùn)算時間。
③ 將兩個各有n個元素的有序表歸并成一個有序表,其最少的比較次數(shù)是n次,最多2n-1次。
④循環(huán)隊列存儲在數(shù)組A[0…m]中,則入隊時的操作為 rear=(rear+1)%(m+1)。
?入隊是:rear=(rear+1)%(m+1) //m+1 代表有m+1個空間 。。它是0到m的數(shù)組
?出隊是: front =(front+1)%(m+1)
⑤ 循環(huán)隊列放在一維數(shù)組A[0…M-1]中,end1指向隊頭元素,end2指向隊尾元素的后一個位置。假設(shè)隊列兩端均可進(jìn)行入隊和出隊操作,隊列中最多能容納M-1個元素。初始時為空。則 隊空:end1==end2;隊滿:end1==(end2+1)mod M
⑥ 一個棧的入棧序列為1,2,3,…,n,其出棧序列是p1,p2,p3…,pn。若p2=3,則p3可能取值的個數(shù)是 n-1;
⑦ 圖的BFS生成樹的樹高小或相等DFS生成樹的樹高。
【例題】線性 表( a1, a2,…, an)采用順序存儲結(jié)構(gòu)。試問:
(1) 在等 概率 的 前提下, 平均 每 插入 一個 元素 需要 移動 的 元素 個數(shù) 為 多少?
(2) 若 元素 插在 ai 與 ai+ 1 之間( 0 ≤ i ≤ n- 1) 的 概率 為, 則 平均 每 插入 一個 元素 所要 移動 的 元素 個數(shù) 又是 多少?
① 線性表的順序存儲結(jié)構(gòu)是一種 隨機(jī)存取 的存儲結(jié)構(gòu),線性結(jié)構(gòu)的鏈?zhǔn)酱鎯κ且环N 順序存取 的存儲結(jié)構(gòu)。
② 數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的 操作對象 以及它們之間的 關(guān)系 和運(yùn)算等的學(xué)科。
③ 一個數(shù)據(jù)結(jié)構(gòu)在計算機(jī) 存儲器內(nèi)的表示 稱為存儲結(jié)構(gòu)。
④ 鏈棧和順序棧相比較,有一個較為明顯的優(yōu)點(diǎn)是 通常不會出現(xiàn)棧滿的情況。
⑤ 引入循環(huán)隊列的目的是為了克服 “假溢出”現(xiàn)象。
⑥ 區(qū)分循環(huán)隊列的滿與空,只有兩種方法,它們是 犧牲一個存儲單元 和 設(shè)標(biāo)記。
⑦ 設(shè)循環(huán)隊列存放在向量data[0…M]中,則隊頭指針front 在循環(huán)意義下的出隊操作可表示為 front=(front+1)%(M+1),若用犧牲一個單元的辦法來區(qū)分隊滿和隊空(設(shè)隊尾指針rear),則隊滿的條件為 front==(rear+1)%(M+1)。
⑧ 對于長度為n且順序存儲的線性表,在任何位置上操作都是等概率的情況下,插入一個元素需要平均移動表中的元素個數(shù) ;刪除一個元素平均需要移動表中元素 。
⑨ 在一個不帶頭結(jié)點(diǎn)的單鏈表中,在表頭插入或刪除與在其他位置上插入或刪除其操作過程 不相同。
⑩ 在線性表的順序存儲中,元素之間的邏輯關(guān)系是通過 存儲位置 決定的;在線性表的鏈?zhǔn)酱鎯χ?#xff0c;元素之間的邏輯關(guān)系是通過 指針 決定的。
? 單鏈表表示法的基本思想是用 指針 表示結(jié)點(diǎn)的邏輯關(guān)系。
? 數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素間的邏輯關(guān)系,數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)在計算機(jī)中的表示(又稱映像)方法,是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存儲實現(xiàn)。
? 數(shù)據(jù)的物理結(jié)構(gòu)包括 數(shù)據(jù)元素 的表示和數(shù)據(jù)元素間關(guān)系的表示。
? 程序=數(shù)據(jù)結(jié)構(gòu)+算法。
?線性表L=(a1, a2, …, an)用數(shù)組表示,假定刪除表中任一元素的概率相同,則刪除一個元素平均需要移動元素的 (n-1)/2;
?線性表L=(a1, a2, …, an)用數(shù)組表示,假定刪除表中任一元素的概率相同,則插入一個元素平均需要移動元素的 n/2。
? 一個字符串中 任意個連續(xù)的字符組成的子序列 稱為該串的子串。
? 設(shè)T和P是兩個給定的串,在T中尋找等于P的子串的過程稱為 模式匹配,又稱P為 模式串。
? 串是一種特殊的線性表,其特殊性表現(xiàn)在 其數(shù)據(jù)元素都是字符;
? 串的兩種最基本的存儲方式是 順序存儲、鏈?zhǔn)酱鎯?#xff1b;
? 兩個串相等的充分必要條件是 兩串的長度相等且兩串中對應(yīng)位置的字符也相等。
① 若度為m的哈夫曼樹中,其葉結(jié)點(diǎn)個數(shù)為n,則非葉結(jié)點(diǎn)的個數(shù)為 [(n-1)/(m-1)](向上取整)
② 樹的后根遍歷序列等同于該樹對應(yīng)的二叉樹的 中序序列。
③ 若二叉樹采用二叉鏈表存儲結(jié)構(gòu),要交換其所有分支結(jié)點(diǎn)左、右子樹的位置,利用 后序 遍歷方法最合適。
④ 一棵非空的二叉樹的先序遍歷序列與后序遍歷序列正好相反,則該二叉樹一定滿足 只有一個葉子結(jié)點(diǎn)。
⑤ 某二叉樹的前序序列和后序序列正好相反,則該二叉樹一定是 高度等于其結(jié)點(diǎn)數(shù) 的二叉樹。
⑥ 線索二叉樹是一種 物理或存儲 結(jié)構(gòu)。
⑦ n個結(jié)點(diǎn)的線索二叉樹上含有的線索數(shù)為 n+l(即空指針域個數(shù))。
⑧ 中序線索樹 的遍歷仍需要棧的支持。
⑨ 設(shè)F是一個森林,B是由F變換得的二叉樹。若F中有n個非終端結(jié)點(diǎn),則B中右指針域為空的結(jié)點(diǎn)有 n+1 個。
⑩ 個有n個結(jié)點(diǎn)的圖,最少有 1個連通分量,最多有 n個連通分量。
? 用有向無環(huán)圖描述表達(dá)式(A+B)*((A+B)/A),至少需要頂點(diǎn)的數(shù)目為 5。
? 如果含n個頂點(diǎn)的圖形形成一個環(huán),則它有 n 棵生成樹。
? 對稀疏圖最好用 克魯斯卡爾(Kruskal) 算法求最小生成樹,對稠密圖最好用 普里姆(Prim) 算法求最小生成樹。
? 判斷一個無向圖是一棵樹的條件是 n個頂點(diǎn),n-1條邊的無向連通圖。
? 有向圖G的強(qiáng)連通分量是指 有向圖的極大強(qiáng)連通子圖。
? N個頂點(diǎn)的無向連通圖至少有N-1條邊,則鄰接矩陣中至少有2(N-1)個非零元素。
? 在AOE網(wǎng)中,從源點(diǎn)到匯點(diǎn)路徑上各活動時間總和最長的路徑稱為 關(guān)鍵路徑。
? AOV網(wǎng)中,結(jié)點(diǎn)表示 活動,邊表示 活動間的優(yōu)先關(guān)系;AOE網(wǎng)中,結(jié)點(diǎn)表示 事件,邊表示 活動邊上的權(quán)代表活動持續(xù)時間。
? 二叉查找樹的查找效率與二叉樹的 樹型 有關(guān), 在 呈單枝樹 時其查找效率最低,
? 堆排序是 選擇 類排序,堆排序平均執(zhí)行的時間復(fù)雜度 O(nlog2n) ;需要附加的存儲空間復(fù)雜度分是O(1)
① 設(shè)一維數(shù)組中有 n 個數(shù)組元素,則讀取第 i 個數(shù)組元素的平均時間復(fù)雜度為 O(1)
② 在二叉排序樹中插入一個結(jié)點(diǎn)的時間復(fù)雜度為 O(n)
③ 設(shè)二叉樹的先序遍歷序列和后序遍歷序列正好相反,則該二叉樹滿足的條件是 高度等于其結(jié)點(diǎn)數(shù)。
總結(jié)
- 上一篇: C# 中的占位符本质
- 下一篇: 点云数据(point cloud)