資料結構 樹和二叉樹筆記 xp

2021-09-29 01:45:33 字數 1843 閱讀 3764

二叉樹圖

圖g又定點集v和邊集e組成,記g=(v,e)。

頂點集表示:v= ,|v|為頂點的個數,或圖g的階。

邊集表示:e=, |e|為邊的個數。

圖不可以為空——圖不可以沒有頂點,但是可以沒有邊

有向圖 e1= 點1指向點2,點2指向點3

無向圖e2=點之間僅有連線,沒有指向

簡單圖:

多重圖:兩點之間的邊數大於1

完全圖:兩個頂點之間都存在邊

子圖連通:無向圖中,兩點有路徑存在。

連通圖:任意兩點之間連通。

連通分量:無向圖中的極大連通子圖,稱為連通分量。(如果乙個圖有n個頂點,並且小於n-1條邊,則必定非連通!)

生成樹:包含全部頂點的極小連通子圖。

強連通:有向圖中,兩點之間互相有路徑,則兩點強連通。

強連通圖:任意兩點強連通。

頂點的度:該頂點為乙個端點的邊的數目(無向圖中,頂點v的度是依附於該頂點的邊的條數)

邊上可以帶權,帶權的圖也稱為網

邊數很少的圖——稀疏圖(|e|<|v|*log|v|),反之是稠密圖

路徑是兩點之間的路徑,路徑長度是路徑中的邊數,第乙個頂點和最後乙個頂點相同的路徑稱為迴路或者環

圖的儲存以及基本操作

1、鄰接矩陣法(無向圖、有向圖、網都可以的;適合稠密圖;容易確定任意兩點是否有邊,但確定圖中的邊數需要遍歷全體,代價高;空間複雜度是o(n^2))

2、鄰接表法(適合稀疏圖;對於給頂點,容易找出其對應鄰邊,但確定兩個點之間是否存在邊,需要再查詢另一點「鄰接矩陣法則不用」;)

3、十字鍊錶法(有向圖的)不僅可以像鄰接表一樣,還可以像逆鄰接表一樣

4、鄰接多重表(無向圖的)

圖的遍歷

(借助佇列)1、廣度優先遍歷(breadth-first-search)bfs

使用鄰接表儲存時,乙個頂點空間複雜度o(|v|),時間複雜度o(|e|),總的時間複雜度o(|v|+|e|);若採用鄰接矩陣的儲存方式,乙個頂點時間複雜度o(|v|),總的o(|v|2)

(借助棧)2、深度優先遍歷(deepth-first-search)dfs

圖的應用

一、求最小生成樹:包含所有頂點,但是有最少的邊

法一:prim演算法(名字短,所以演算法也從區域性開始)

1、找最小權值的兩點連通作為起始點

2、兩點連通後所擁有的最小權值作為下一對連通點

。。。。。。

ps:不能生成環

法二、kruskal演算法(名字長,演算法也從全域性開始)

1、全域性最短,進行連通

2、第二短。。。。。。

ps:同樣不能生成環

二、求最短路徑:求某個原點到各個頂點的最小路徑

法二:floyd(路由器定址)都走一遍,記錄所有最優路徑

三、拓撲排序

【有向無環圖】乙個有向圖中不存在環

【aov網】如用有向無環圖表示乙個工程,用表示vi與vj之間存在的前驅後繼關係,將這種有向圖稱之為《頂點表示活動的網路》aoe網。

【拓撲排序】1、每個定點出現且出現一次;2、若頂點a排序排在b的前面,則圖中不存在b->a;

(可借助棧了避免重複比較)【拓撲排序演算法】1、選擇乙個沒有前驅的點輸出;2、刪除該點及以它為起點的邊;3、重複12,若當前圖為空或者不存在無前驅的點就停止,而後一種情況說明有環。

四、關鍵路徑

【aoe網】帶權有向圖中,頂點表示時間,有向邊表示活動,邊上的權值表示活動的開銷,則成這種有向圖為用邊表示活動的網路,aoe網。

有些活動可以並行的,從源點到匯點的路可能有多條,並且可能長度還不一樣。儘管時間不同,但是只有完成了所有,整個工程才算是完成了。

「所以」從源點到匯點的所有路徑中,最大路徑長度的路程稱為【關鍵路徑】,關鍵路徑上的活動稱之為【關鍵活動】。

資料結構筆記 樹 二叉樹 滿二叉樹

二叉樹滿二叉樹 樹是n n 0 個結點的有限集。結點為零的樹為空樹。任意一棵非空樹中 1.有且有乙個特定的稱為根的結點 2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每乙個集合又是一棵樹,並稱為根的子樹。1.結點擁有的子樹數稱為結點的度 2.度為0的結點稱為葉結點或分支結點,除根...

資料結構 樹和二叉樹

第一節 二叉樹的定義與基本操作 定義 我們把滿足以下兩個條件的樹型結構叫做二叉樹 binary tree 1 每個結點的度都不大於2 2 每個結點的孩子結點次序不能任意顛倒。由定義得出 二叉樹的每個結點只能含有0 1或2個孩子,且有左右之分。1 二叉樹的五種基本形態 2 二叉樹性質 性質1 二叉樹第...

資料結構 樹和二叉樹

定義 二叉樹是n n 0 個節點的有限集合,該集合或者為空集 稱為空二叉樹 或者由乙個根節點和兩棵互不相交的 分別稱為根節點的左子樹和右子樹的二叉樹組成。特點 每個節點最多有兩棵子樹 二叉樹是有序的,其次序不能任意顛倒 斜樹 1.所有節點都只有左子樹的二叉樹稱為左斜樹 2.所有節點都只有右子樹的二叉...