資料結構大略

2021-10-20 19:24:53 字數 2279 閱讀 5747

先進後出

先進先出

迭代器是一種物件,可以把抽象容器和通用演算法有機統一起來,具有遍歷複雜資料結構的能力。每種容器都將其迭代器以巢狀的方式定義於內部。

雜湊表(hash table,也叫雜湊表),是根據鍵(key)而直接訪問在記憶體儲存位置的資料結構。也就是說,它通過計算乙個關於鍵值的函式,將所需查詢的資料對映到表中乙個位置來訪問記錄,這加快了查詢速度。這個對映函式稱做雜湊函式,存放記錄的陣列稱做雜湊表。

二叉樹(英語:binary tree)是每個節點最多只有兩個分支(即不存在分支度大於2的節點)的樹結構。通常分支被稱作「左子樹」或「右子樹」。二叉樹的分支具有左右次序,不能隨意顛倒。

二叉樹的第i層至多擁有2(i-1)個節點;深度為k的二叉樹至多總共有2k-1個節點(定義根節點所在深度為1),而總計擁有節點數符合的,稱為「滿二叉樹」。

在一顆二叉樹中,若除最後一層外的其餘層都是滿的,並且最後一層要麼是滿的,要麼在右邊缺少連續若干節點,則此二叉樹為完全二叉樹(complete binary tree)

順序儲存結構

二叉樹可以用陣列或鍊錶來儲存,若是滿二叉樹就能緊湊排列而不浪費空間。

如果某個節點的索引為i,(假設根節點的索引為0)則在它左子節點的索引會是2i+1,以及右子節點會是2i+2;而它的父節點(如果有)索引則為(i-1)/2。

這種方法更有利於緊湊儲存和更好的訪問的區域性性,特別是在前序遍歷中。然而,它需要連續的儲存空間,這樣在儲存高度為h的n個節點所組成的一般樹時,將浪費很多空間。

鏈式儲存結構

由二叉樹的定義得知二叉樹的結點由乙個資料元素和分別指向左右子樹的兩個分支構成 ,則表 示二叉樹的鍊錶中的結點至少包含三個域 :資料域和左右指標域。有時 ,為了便於找 到結點的雙親 ,則還可在結點結構

中增加乙個指向其雙親受的指標域。

遍歷二叉樹

深度優先遍歷

在深度優先順序中,我們希望從根結點訪問最遠的結點。和圖的深度優先搜尋不同的是,不需記住訪問過的每乙個結點,因為樹中不會有環。前序,中序和後序遍歷都是深度優先遍歷的特例。

前序遍歷

前序遍歷運算:即先訪問根結點,再前序遍歷左子樹,最後再前序遍歷右子樹。前序遍歷運算訪問二叉樹各結點是以根、左、右的順序進行訪問的

中序遍歷

中序遍歷運算:即先中前序遍歷左子樹,然後再訪問根結點,最後再中序遍歷右子樹。中序遍歷運算訪問二叉樹各結點是以左、根、右的順序進行訪問的

後序遍歷

後序遍歷運算:即先後序遍歷左子樹,然後再後序遍歷右子樹,最後訪問根結點。後序遍歷運算訪問二叉樹各結點是以左、右、根的順序進行訪問的

廣度優先遍歷

和深度優先遍歷不同,廣度優先遍歷會先訪問離根節點最近的節點。二叉樹的廣度優先遍歷又稱按層次遍歷。演算法借助佇列實現。

紅黑樹是一種含有紅黑結點並能自平衡的二叉查詢樹。它必須滿足下面性質:

性質1:每個節點要麼是黑色,要麼是紅色。

性質2:根節點是黑色。

性質3:每個葉子節點(nil)是黑色。

性質4:每個紅色結點的兩個子結點一定都是黑色。

性質5:任意一結點到每個葉子結點的路徑都包含數量相同的黑結點。

從性質5又可以推出:

性質5.1:如果乙個結點存在黑子結點,那麼該結點肯定有兩個子結點

一種特別的完全二叉樹。若是滿足以下特性,即可稱為堆:「給定堆中任意節點p和c,若p是c的母節點,那麼p的值會小於等於(或大於等於)c的值」。

堆的實現通過構造二叉堆(binary heap),實為二叉樹的一種;由於其應用的普遍性,當不加限定時,均指該資料結構的這種實現。這種資料結構具有以下性質。

任意節點小於(或大於)它的所有後裔,最小元(或最大元)在堆的根上(堆序性)。

堆總是一棵完全樹。即除了最底層,其他層的節點都被元素填滿,且最底層盡可能地從左到右填入。

將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。

帶權圖中,邊帶有乙個數字,叫做權,它可能代表距離、耗費、時間或其他意義。

帶權圖用來最常解決的問題是最短路徑問題(pps)。

帶權圖的最小生成樹中有所有的頂點和連線它們的必要的邊,且這些邊的權值最小。

優先順序佇列的演算法可用於尋找帶權圖的最小生成樹。

解決無向帶權圖的最小生成樹的方法

1… 新的頂點到其他頂點的所有邊,這些頂點不能在樹的集合中,把這些邊放如優先順序佇列。

2… 最小的邊,把它和它所到達的頂點放入樹的集合中。

3… 復以上步驟,直到所有頂點都在樹的集合中。

帶權圖的最短路徑問題可以用 dijkstra 演算法解決。這個演算法基於圖的鄰接矩陣表示法,它不僅能找到任意兩點間的最短路徑,還可以找到某個指定點到其他所有頂點的最短路徑。

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構 01 資料與資料結構

1.資料data 資料是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。2.資料元素data elements 資料元素是組成資料的 有一定意義的基本單位,在計算機中通常作為整體進行處理。3.資料物件data object 資料物件是性質相同的資料元素的...