算法--基本數據結構總結

其實數據結構和算法真的很重要,以前一直不怎麼在意,所以每次筆試面試都被鄙視。“編程就是算法和數據結構,算法和數據結構是編程的靈魂,現在感覺這句話還是有點道理的。今天翻了翻一些基本的數據結構,記了一些基本的性質,進行總結,後面還會繼續總結一些常見的查找和排序算法。

一、線性結構

順序存儲線性表:將元素依次存儲在地址連續的存儲單元中,物理上相鄰

鏈式存儲線性表:將元素按照邏輯順序鏈接在依次,不要求地址連續

棧:僅在表的一端進行插入、刪除操作的線性表,“後進先出”

隊列:僅在表的一端進行插入,另一端進行刪除的線性表,“先進先出”

棧和隊列有時候筆試會針對”FIFO“這些特性出問題,不過一般理解了,就比較簡單。

二、樹

2.1概念

二叉樹是每個節點最多有兩個子樹(“左子樹”和“右子樹”)的樹結構。

滿二叉樹:二叉樹的每一層節點個數都達到最大(即深度爲k,且有2^k-1個節點);

完全二叉樹:只有最下面兩層節點的度數可以小於2,並且最下一層的節點都集中在左邊(深度爲k,有n個節點的二叉樹,當且僅當其每一個節點都與深度爲k的滿二叉樹中,序號爲1至n的節點對應)。

滿二叉樹是完全二叉樹的特例,如下圖:


平衡二叉樹:又被稱爲AVL樹,它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹(完全二叉樹是平衡二叉樹),如下圖


2.2二叉樹性質:

  • a.二叉樹的第i層至多有2^{i-1}個結點;
  • b.深度爲k的二叉樹至多有2^k-1個結點;
  • c.具有n個節點的完全二叉樹的深度k=log2n+1;
  • d.對任何一棵二叉樹T,若終端結點的個數爲n0,度爲2的結點數爲n2,則n0=n2+1。

2.3二叉樹遍歷

二叉樹遍歷記住一點就行了,即遍歷的順序都是針對根節點而言的。例如先序即先訪問根節點,再遍歷左子樹,最後遍歷右子樹。結合實例來講,如下圖:


先序遍歷結果:abdgcefh

中序遍歷結果:dgbaechf

後序遍歷結果:gdbehfca

三、圖

無向完全圖:任意兩個頂點都有一條直接邊相連接;在含有n個頂點的無向完全圖中,有n(n-1)/2條邊;

有向完全圖:任意兩個頂點都有方向互爲相反的兩條弧相連接;在含有n個頂點的有向完全圖中,有n(n-1)條邊。

圖的深度優先遍歷:類似於樹的先序遍歷,下圖顯示了深度優先搜索頂點被訪問的順序:


圖的廣度優先遍歷:類似於樹的按層次遍歷,下圖顯示了廣度優先搜索頂點被訪問的順序:

ps.上面兩張圖片來源 http://blog.csdn.net/andyelvis/article/details/1728378。 由於CSDN加了水印,有些模糊,看不清楚的話可以去圖片原址去看。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章