*二叉樹
前序遍歷使用遞迴:1.列印根節點2.遞迴遍歷左子樹3.遍歷右子樹(遞迴結束條件:該節點不存在)
中序遍歷使用遞迴:1.遞迴遍歷左子樹2.列印根節點3.遍歷右子樹(遞迴結束條件:該節點不存在)
後序遍歷使用遞迴:1.遞迴遍歷左子樹2.列印根節點3.遍歷右子樹(遞迴結束條件:該節點不存在)
***線索二叉樹
我們對二叉樹以某種次序遍歷使其變為線索二叉樹的過程稱為線索化。相當於把乙個二叉樹轉換為乙個雙向鍊錶
***赫夫曼樹(帶權路徑長度最小的樹)
壓縮檔案:使用赫夫曼編碼(左側為0,右側為1)
*圖*****鄰接矩陣
*****鄰接表(和孩子表示法一樣。用一維陣列儲存頂點,每個頂點的所有鄰接點用單鏈表儲存)
兩者區別:
對於乙個具有n個頂點e條邊的無向圖
它的鄰接表表示有n個頂點表結點2e個邊表結點
對於乙個具有n個頂點e條邊的有向圖
它的鄰接表表示有n個頂點表結點e個邊表結點
如果圖中邊的數目遠遠小於n2稱作稀疏圖,這是用鄰接表表示比用鄰接矩陣表示節省空間;
如果圖中邊的數目接近於n2,對於無向圖接近於n*(n-1)稱作稠密圖,考慮到鄰接表中要附加鏈域,採用鄰接矩陣表示法為宜。
*****深度優先dfs
*****廣度優先bfs
**最小生成樹(村莊架設通訊網路)
(1)prim演算法:先找乙個頂點(隨意)放入最小生成樹u中,不停然後找剩餘頂點中到u中頂點權值最小的頂點納入u中,時間複雜度:o(n2)
(2)kruskal演算法:首先構造乙個只含n個頂點的森林,然後依權值從小到大從連通網中選擇邊加入到森林中,並使森林中不產生迴路,直至森林變成一棵樹為止,時間複雜度:o(eloge),e為邊數
**最短路徑(兩點之間的最短)
(1)迪傑斯特拉演算法:一步一步求出它們之間頂點的最短路徑,然後求得更遠頂點的最短路徑。 o(n3)
(2)弗洛伊德演算法:他每次都會選擇乙個中介點,然後,遍歷整個矩陣,查詢需要更新的值。 o(n3);用於求所有頂點到所有頂點的最短路徑問題。
第六章 第七章
第六章 1.屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關的 值 稱為屬性 屬性 代表與文法符號相關的資訊,和變數一樣,可以進行計算和傳遞。1 綜合屬性 用於 自下而上 傳遞資訊 在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值確定 2 繼承屬性用於 自上...
第六章第七章 基本過濾
1 過濾資料 1 使用where語句 select prod name,prod price from products where prod price 2.50 2 操作符 操 作 符 說 明 等於 不等於!不等於 小於 小於等於 大於 大於等於 between 在指定的兩個值之間 betwee...
C primer plus第六章 第七章筆記
補第四章printf scanf 筆記 關於printf scanf 返回值問題 1 printf 函式返回值,他返回的是列印字元的個數,是其列印輸出功能的附帶用途。具體應用如下 2 scanf 函式返回成功讀取的項數。如果沒有讀取任何項,且需要讀取乙個數字而使用者卻輸入乙個非數值字串,scanf ...