【資料結構】陣列、連結串列、棧、佇列、二叉樹
阿新 • • 發佈:2019-01-19
陣列
- 陣列儲存的資料在地址空間上是連續的。
- 方便資料的查詢,查詢資料的時間複雜度為O(1)。
連結串列
- 連結串列儲存的資料在地址空間上可連續,可不連續。
- 連結串列中的每一個節點都包括資料和指向下一個地址的指標。
- 查詢資料的時間複雜度為O(n),方便資料的增刪。
如何快速找到連結串列的中間值:
- 先遍歷一遍單鏈表確定長度L,然後再次從頭結點出發迴圈L/2次
- 設定兩個指標都指向單鏈表的頭結點,第一個指標的移動速度是第二個的2倍,當第一個指向末尾結點時,第二個就指向了中間結點。這種方法要快一些。
棧
- 棧是一種先入後出的邏輯結構,每次加入新的元素和拿走元素都在頂部操作。
佇列
- 佇列是一種先入先出的邏輯結構,對元素的操作分別在對頭和隊尾,元素的插入在對尾,元素的刪除在對頭。
二叉樹
- 每個節點至多隻有兩個子樹的結構,在父節點中有指向左右子樹的指標
- 先序遍歷:根–左–右
- 中序遍歷:左–根–右
- 後序遍歷:左–右–根
- 查詢二叉樹:左子樹的值小於根節點的值,右子樹的值大於根節點的值,在插入資料時,從根節點開始往下比較,小於比較值則放在左邊,大於比較值放在右邊。插入一個值的時間複雜度是O(logn)
- 平衡二叉樹:左右子樹的高度差的絕對值不超過1