1. 程式人生 > 其它 >2021-01-31

2021-01-31

連結串列二叉樹知識點歸納

1.連結串列[Linked List]:
概念:
連結串列是由一組不必相連(不必相連:可以連續也可以不連續)的記憶體結構(節點),按特定的順序連結在一起的抽象資料型別。

補充

抽象資料型別(Abstract Data Type [ADT]):表示數學中抽象出來的一些操作的集合。
記憶體結構:記憶體中的結構,如:struct、特殊記憶體塊...等等之類;

陣列和連結串列的區別和優缺點:

陣列是一種連續儲存線性結構,元素型別相同,大小相等

陣列的優點:

存取速度快

陣列的缺點:

事先必須知道陣列的長度

插入刪除元素很慢

空間通常是有限制的

需要大塊連續的記憶體塊

插入刪除元素的效率很低

連結串列是離散儲存線性結構
n 個節點離散分配,彼此通過指標相連,每個節點只有一個前驅節點,每個節點只有一個後續節點,首節點沒有前驅節點,尾節點沒有後續節點。
連結串列優點:
空間沒有限制
插入刪除元素很快
連結串列缺點:
存取速度很慢
連結串列型別:
單鏈表、雙向連結串列、迴圈連結串列
連結串列核心操作:
插入、刪除、查詢(遍歷)
2.二叉樹:
概念:
二叉樹是樹的一種,每個節點最多可具有兩個子樹,即結點的度最大為 2(結點度:結點擁有的子樹數)
二叉樹的種類:
斜樹、滿二叉樹、完全二叉樹
二叉樹的遍歷方式:
二叉樹的遍歷方式,一般分為先序遍歷,中序遍歷,後序遍歷。
• 先序遍歷
o 先訪問根節點,然後訪問左節點,最後訪問右節點(根->左->右)
• 中序遍歷
o 先訪問左節點,然後訪問根節點,最後訪問右節點(左->根->右)
• 後序遍歷
o 先訪問左節點,然後訪問右節點,最後訪問根節點(左->右->根)
3.常見資料結構:

資料儲存的常用結構有:棧、佇列、陣列、連結串列和紅黑樹(二叉樹)。

棧:
特點:
先進後出(即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素)。
棧的入口 出口都是棧的頂端位置。
需注意的兩個名詞

·····壓棧:存元素

·····彈棧:取元素

佇列:
概念:
queue,簡稱隊, 佇列是一種特殊的線性表,是運算受到限制的一種線性表,只允許在表的
一端進行插入,而在另一端進行刪除元素的線性表。隊尾(rear)是允許插入的一端。隊頭(front)是
允許刪除的一端。空佇列是不含元素的空表。
特點:
先進先出(即,存進去的元素,要在後它前面的元素依次取出後,才能取出該元素)。
佇列的入口、出口各佔一側。
陣列:
概念:
是有序的元素序列,陣列是在記憶體中開闢一段連續的空間,並在此空間存放元素。
特點:
查詢元素快:通過索引,可以快速訪問指定位置的元素
增刪元素慢
指定索引位置增加元素:需要建立一個新陣列,將指定新元素儲存在指定索引位置,再把原
陣列元素根據索引,複製到新陣列對應索引的位置。
指定索引位置刪除元素:需要建立一個新陣列,把原陣列元素根據索引,複製到新陣列對應
索引的位置,原陣列中指定索引位置元素不復制到新陣列中。
連結串列:
概念:
由一系列結點node(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的
指標域。
特點:
多個結點之間,通過地址進行連線。
查詢元素慢:想查詢某個元素,需要通過連線的節點,依次向後查詢指定元素
增刪元素快:
增加元素:只需要修改連線下個元素的地址即可。
刪除元素:只需要修改連線下個元素的地址即可。
紅黑樹(二叉樹):
概念:
binary tree ,是每個結點不超過2的有序樹(tree) 。
簡單的理解,就是一種類似於我們生活中樹的結構,只不過每個結點上都最多隻能有兩個子結點。
二叉樹是每個節點最多有兩個子樹的樹結構。頂上的叫根結點,兩邊被稱作“左子樹”和“右子樹”。
特點:
速度特別快,趨近平衡樹,查詢葉子元素最少和最多次數不多於二倍