與普通佇列的區別
1.保證每次取出的元素時佇列中優先順序最高的
2.優先級別可自定義
場景 從雜亂無序的資料中按照一定的順序(或者優先順序)篩選資料
本質 1.二叉堆的結構,堆在英文裡叫binary heep
2.利用乙個陣列結構來實現完全二叉樹
特性 1.陣列裡的第乙個元素array[0]擁有最高的優先順序
2.給定乙個下標i,那麼對於元素array[i]而言
1).父節點 對應的元素下標是(i-1)/2
2).左側子節點 對應的元素下標是2*i + 1
3).右側子節點 對應的元素下標是2*i + 2
3.陣列中每個元素的優先順序都必須要高於它兩側子節點
圖的基本知識
階、度樹、森林、環
有向圖、無向圖、完全有向圖、完全無向圖
連通圖、聯通分量
圖的儲存和表達方式:鄰接矩陣、鄰接鍊錶
圍繞圖的演算法
圖的遍歷:深度優先、廣度優先
環的檢測:有向圖、無向圖
拓撲排序
最短路徑演算法:dijkstra、bellman-ford、floyd warshall
圖的著色、旅行商問題等
也稱字典樹
這種資料結構被廣泛地運用在字典查詢當中
什麼是字典查詢?
例如:給定一系列構成字典的字串,要求在字典當中找出所有以"abc"開頭的字串
方法一:暴力收索法
方法二:字首樹
字首樹重要性質
1.每個節點至少包含兩個基本屬性
1.)children:陣列或者集合,羅列出每個分支當中包含的所有字元
2.)isend:布林值,表示該節點是否為某字串的結尾
2.根節點是空的
3.除了根節點,其他所有節點都可能是單詞的結尾,葉子節點一定都是單詞的結尾
什麼是 線段樹
一種按照二叉樹的形式儲存資料的結構,每個節點儲存的都是陣列裡某一段的總和。
重要的基本特徵
1.利用陣列來表示多叉樹的結構,和優先佇列有些類似
2.優先佇列是用陣列來表示完全二叉樹,而樹狀陣列是多叉樹
3.樹狀陣列的第乙個元素時空節點
4.如果節點tree[y]是tree[x]的父節點,那麼需要滿足y=x-(x&(-x))
高階資料結構
struct treenode treenode是經典的二叉樹節點,在資料的序列化和反序列按照層遍歷來處理的。以上二叉樹會被序列化為 1 root節點1,是第一層 2,3 然後第二層是2,3 4,第三層分別是2節點的兩個孩子節點空,用 來表示,然後3節點的左孩子為4,右孩子節點為 5 第四層4節點的...
高階資料結構c
動態查詢字首和 vector int bits 放樹狀陣列 int n 原陣列的大小 1表示樹狀陣列的大小,為什麼要 1呢,因為樹狀陣列多了乙個前0個數的和 intquery int x void add int i,int x 功能比樹狀陣列多一點 const int e 100006 struc...
MATLAB 高階資料結構 table
第一種根據變數名 var 構造表,所有變數的行數必須相同 第二種為 建立空間,sz 為行向量,指定維數,例如 4,3 表示 4 行 3 列 vartypes為資料型別元胞陣列。sz 4 3 vartypes t table size sz,variabletypes vartypes t table...