演算法常識 非線性結構

2022-03-02 12:14:30 字數 2090 閱讀 5302

1.集合中必存在唯一的乙個"第乙個元素";

2.集合中必存在唯一的乙個"最後的元素";

3.除最後元素之外,其它資料元素均有唯一的"後繼";

4.除第一元素之外,其它資料元素均有唯一的"前驅"。

資料結構中線性結構指的是資料元素之間存在著「一對一」的線性關係的資料結構。

如(a0,a1,a2,.....,an),a0為第乙個元素,an為最後乙個元素,此集合即為乙個線性結構的集合。

相對應於線性結構,非線性結構的邏輯特徵是乙個結點元素可能對應多個直接前驅和多個後繼。

在非線性結構中常用的:有樹和圖。

樹樹的資料結構是怎麼樣的?

人們把這種分叉的東西,看起來像樹一樣,就稱作樹。其實這一點也不像樹,畢竟樹根在下面,總之這個稱作樹的人,可以吹好久的牛了。

樹的概念:

樹是n(n>=0)個節點的有限集合。當n=0時,稱為空樹。在任意乙個非空樹中,有如下特點:

1.有且僅有乙個特定的稱為根的節點。

2.當n>1時,其餘節點可分為m(m>0)個互不橡膠的有限集,每個集合本身又是乙個樹,稱為子樹。

下面是一些概念性東西:

根節點:只有乙個,第乙個元素。

葉子節點:後面沒有節點。

子樹:設t是有根樹,a是t中的乙個頂點,由a以及a的所有後裔(後代)匯出的子圖稱為有向樹t的子樹。

如下圖:

父節點:是其子節點的父節點。

子節點:相對其父節點是子節點。

兄弟節點:同乙個父節點。

二叉樹可以說二叉樹是玩花樣最多的東西,為什麼這麼說?

因為二叉樹有規律性可尋,有窮,特點多,有成為各種演算法的潛質。

二叉樹如圖:

檢視一下概念:

首先要符合樹,這種樹的每乙個節點最多有2個孩子階段。左邊的稱為:左孩子,右邊的稱為右孩子。

特殊的二叉樹:

1.滿二叉樹:

乙個二叉樹的所有的非葉子節點都存在左右孩子,並且所有的葉子節點都在同一層級上,並且這個樹就是滿二叉樹。

完全二叉樹:對於乙個有n個節點的二叉樹,按層級順序編號,則所有節點的便函為1到n,如果這個樹所有節點和同意的滿二叉樹的編號為從1到n的節點位置相同,則這個二叉樹為完全二叉樹。

儲存在前面提及到邏輯概念之所以是邏輯概念,是因為其一定要基於物理概念,物理結構可以多樣,就像做門可以用不同材料。

假如說用順序儲存的陣列來訪問。

比如說下方這個:

然後陣列儲存如下:

從左往右,記錄其子節點,沒有的不存。

有個規律之處在於:

其父節點與左孩子節點的左邊位置關係:

父節點索引位為:parent

左孩子為2parent+1

這是怎麼算過來的?假設父節點在第n層,那麼最後乙個元素的索引為20+21+....+2n-1,減1是因為從0開始,那麼是2(n+1)-2,假設父元素距離最後乙個位置為x,那麼父元素索引為2^(n+1)-2-x

左孩子一定是在n+1層,同理n+1層最後乙個元素是2(n+2)-2,因為父元素距離n層最後乙個元素為x,那麼左子元素一定距離為2x+1,2(n+2)-2-(2x-1)。

2(n+2)-2-(2x-1)=2(2(n+1)-2-x)+1。

所以結論就是:2parent+2

同理右節點就是左節點加1為:2*parent+2

當然如何很稀疏的話太浪費空間。

線性結構和非線性結構

資料結構是計算機儲存 組織資料的方式。常見的資料結構分類方式如下圖 常用的線性結構有 線性表,棧,佇列,迴圈佇列,陣列。線性表中包括順序表 鍊錶等,其中,棧和佇列只是屬於邏輯上的概念,實際中不存在,僅僅是一種思想,一種理念 線性表則是在記憶體中資料的一種組織 儲存的方式。線性結構是最簡單最常用的一種...

線性結構與非線性結構

對於資料結構,感情是 在撓頭也要學啊 我愛資料結構,資料結構使我快樂 呵 這裡一點一點開始扯 線性資料結構 定義為 1.有唯一的首元素及尾元素,2.資料元素之間是一對一關係 3.除首元素和尾元素外,每個元素都只有唯一的前段和後端 我詞真窮 樣例 線性表,堆,棧,佇列,陣列 基本指一維的 鍊錶 非線性...

線性結構和非線性結構

線性結構和非線性結構 線性結構是乙個有序資料元素的集合。其中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。常用的線性結構有 線性表,棧,佇列,雙佇列,陣列,串。非線性結構中各個資料元素不再保持在乙個線性序列中,每個資料元素可能與零個或者多個其他資料...