資料結構-佇列-樹
什麼是佇列
具有一定操作約束的線性表 只能在一端插入,從另一端刪除
先入先出FIFO
佇列的順序儲存實現
環形陣列可以使陣列的空間得到最大空間利用
佇列的順序儲存結構通常由一個一維陣列和一個記錄佇列頭元 素位置的變數front以及一個記錄佇列尾元素位置的變數rear組成。
注意:
順環佇列會出現空、滿無法區分,解決方法空一個空間不放元素或者新增一個tag或者size標記
佇列的鏈式儲存實現
佇列的鏈式儲存結構也可以用一個單連結串列實現。插入和刪除操作 分別在連結串列的兩頭進行.
樹和樹的表示
查詢(Searching)
查詢:根據某個給定關鍵字K ,從集合R中找出關鍵字與K相同的記錄
-
靜態查詢:集合中記錄是固定的
沒有插入和刪除操作,只有查詢
-
動態查詢:集合中記錄是動態變化的
除查詢,還可能發生插入和刪除
靜態查詢
-
方法1:順序查詢
哨兵的作用可以少一步判斷(i>0)
- 方法2:二分查詢演算法 具有對數的時間複雜度O(logN)
二分查詢的啟示我們可以存在一種新的結構叫做樹
樹的定義
樹(Tree): n(n≥0)個結點構成的有限集合。
當n=0時,稱為空樹;
對於任一棵非空樹(n> 0),它具備以下性質
樹中有一個稱為“根(Root)”的特殊結點,用 r 表示;
其餘結點可分為m(m>0)個互不相交的有限集T1,T2,... ,Tm,其 中每個集合本身又是一棵樹,稱為原來樹的“子樹(SubTree)”
子樹是不相交的
除了根結點外,每個結點有且僅有一個父結點;
一棵N個結點的樹有N-1條邊。
樹的一些基本術語
- 結點的度(Degree):結點的子樹個數
- 樹的度:樹的所有結點中最大的度數
- 葉結點(Leaf):度為0的結點
- 父結點(Parent):有子樹的結點是其子樹
的根結點的父結點 - 子結點(Child):若A結點是B結點的父結 L
點,則稱B結點是A結點的子結點;子結點也
稱孩子結點。 - 兄弟結點(Sibling):具有同一父結點的各
結點彼此是兄弟結點。 - 路徑和路徑長度:從結點n1到nk的路徑為一 個結點序列n1 , n2 ,... , nk , ni是 ni+1的父結 點。路徑所包含邊的個數為路徑的長度。
- 祖先結點(Ancestor):沿樹根到某一結點路 徑上的所有結點都是這個結點的祖先結點。
- 子孫結點(Descendant):某一結點的子樹 中的所有結點是這個結點的子孫。
- 結點的層次(Level):規定根結點在1層, 其它任一結點的層數是其父結點的層數加1。
- 樹的深度(Depth):樹中所有結點中的最 大層次是這棵樹的深度。
樹的表示
這種資料結構稱為二叉樹 左邊指向子節點 右邊指向兄弟節點
相關文章
- 資料結構-佇列資料結構佇列
- 【資料結構-----佇列】資料結構佇列
- 資料結構 - 佇列資料結構佇列
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- 資料結構之「佇列」資料結構佇列
- 資料結構—棧/佇列資料結構佇列
- 資料結構-佇列、棧資料結構佇列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- JavaScript資料結構之-佇列JavaScript資料結構佇列
- 資料結構之佇列(Queue)資料結構佇列
- JavaScript資料結構03 – 佇列JavaScript資料結構佇列
- JavaScript資料結構之佇列JavaScript資料結構佇列
- js資料結構--佇列(queue)JS資料結構佇列
- 資料結構-棧與佇列資料結構佇列
- 資料結構—棧和佇列資料結構佇列
- JavaScript資料結構03 - 佇列JavaScript資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- 資料結構筆記——佇列資料結構筆記佇列
- 【資料結構】--棧和佇列資料結構佇列
- 無鎖資料結構:佇列資料結構佇列
- 資料結構:棧與佇列資料結構佇列
- 資料結構(C#):佇列資料結構C#佇列
- Python資料結構——佇列Python資料結構佇列
- C++資料結構-佇列C++資料結構佇列
- 資料結構與演算法——佇列(環形佇列)資料結構演算法佇列
- 重學資料結構之佇列資料結構佇列
- 資料結構之「雙端佇列」資料結構佇列
- 資料結構學習之佇列資料結構佇列
- JS資料結構學習:佇列JS資料結構佇列
- js實現資料結構--佇列JS資料結構佇列
- 重學資料結構(三、佇列)資料結構佇列
- PTA 雙端佇列 資料結構佇列資料結構
- 資料結構之棧和佇列資料結構佇列
- 資料結構——樹狀陣列資料結構陣列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列