題目中正兒八經構造一顆樹的題目不多,但關於運用樹的思想卻很多,一定要熟練掌握!尤其是樹結構在並查集,堆,這些資料結構實用且高效。
平衡二叉樹的左旋右旋和樹型的關係:左旋右旋是調整樹型的措施。根據具體根節點和子節點的平衡因子,判斷當前二叉搜尋樹的樹型,採用對應的左旋右旋操作來調整樹結構,使其達到平衡二叉樹的結構。(由於內容較多,另寫了一篇做詳細介紹)
並查集:高效查詢合併(由於內容較多,另寫了一篇做詳細介紹)
樹與堆與優先佇列:優先佇列的本質是堆,堆的本質是樹
哈夫曼樹與堆:哈夫曼樹的實現要借助於小頂堆
結構體指標變數,root == null與*root == null的區別:
root == null:表示位址為null,代表空樹
*root == null:表示位址所包含的內容為空,也許節點位址存在,但內容為空(位址存在就不能說明是空樹了)
root在遞迴**中的含義:在**中,root並非乙個樹真正的根節點,root指代遞迴後,所訪問到的當前節點
樹的基本操作:
結構體指標變數的建構函式: 必須使用初始化表賦值
struct node
node
(int x):v
(x),
height(1
),lchild
(null),
rchild
(null
)//要用初始化表,直接賦值不知道為什麼會出錯
/*//!!!!!!!!!報錯!!!!!!!
node(int x)
*/};
node* root =
newnode
(x);
//root仍為結構體指標變數,因此建構函式前要加new
資料結構與演算法 樹結構 二叉樹 筆記整理《十四》
優點 通過下標查詢查詢速度快 對有序陣列可以通過二分查詢提高速度 缺點 如果檢索某個具體的值或者插入元素,會整體移動效率低 優點 插入效率高 缺點 檢索時需要遍歷所有節點查詢 既保持了類似鍊錶結構的插入效率,又保持了查詢的效率,查詢的特點很類似於陣列的二分查詢,比如二叉樹 每個節點都一分為二,父節點...
Unix IO 同步,非同步,阻塞,非阻塞 筆記篇
同步是需要主動等待訊息通知,而非同步則是被動接收訊息通知,通過 通知 狀態等方式來被動獲取訊息。io多路復用在阻塞到select階段時,使用者程序是主動等待並呼叫select函式獲取資料就緒狀態訊息,並且其程序狀態為阻塞。所以,把io多路復用歸為同步阻塞模式。i o多路復用就是通過一種機制,乙個程序...
資料結構與演算法筆記 基本概念篇
總結資料結構的基礎概念部分 將具體問題抽象建立數學模型 設計解出此數學模型的演算法 程式設計與測試調整 邏輯結構 線性結構與非線性結構 集合樹形與圖狀 物理 儲存 結構 順序儲存 鏈式儲存 索引儲存與雜湊儲存 索引對應b樹和b 樹索引,也是資料庫中索引的記憶體結構,雜湊對應雜湊表結構 資料運算 插入...