第三章 查詢 三 《演算法》讀書筆記

2022-06-09 19:00:12 字數 1958 閱讀 3663

目錄3.3.2 紅黑二叉查詢樹

3.3.3 實現

3.3.4 刪除操作

3.3.5 紅黑樹的性質

定義。一棵2-3查詢樹或為一棵空樹,或由以下結點組成:

和以前一樣,我們將指向一顆空樹的連線稱為空鏈結

3.3.1.2 向2-結點中插入新鍵

3.3.1.3 向一棵只含有乙個3-結點的樹中插入新鍵

3.3.1.4 向乙個父結點為2-結點的3-結點中插入新鍵

3.3.1.5 向乙個父結點為3-結點的3-結點中插入新鍵

3.3.1.6 分解根結點

3.3.1.8 全域性性質

在一顆大小為n的2-3樹中,查詢和插入操作訪問的結點必然不超過lgn個。

3.3.2.1 替換3-結點

3.3.2.2 一種等價的定義

滿足這樣定義的紅黑樹和相應的2-3樹是一一對應的

3.3.2.4 顏色表示

3.3.2.5 旋轉

node rotateleft(node h)
3.3.2.6 在旋轉後重置父結點的鏈結

3.3.2.7 向單個2-結點中插入新鍵

3.3.2.8 向樹底部的2-結點插入新鍵

3.3.2.9 向一棵雙鍵樹(即乙個3-結點)中插入新鍵

3.3.2.10 顏色轉換

3.3.2.11 根結點總是黑色

3.3.2.12 向樹底部的3-結點插入新鍵

3.3.2.13 將紅鏈結在樹中向上傳遞

public class redblackbst, value>

private boolean isred(node h);

private node rotateleft(node h);

private node rotateright(node h);

private void flipcolors(node h);

private int size();

public void put(key key, value, val)

public node put(node h, key key, value val)

}

3.3.4.1 自頂向下的2-3-4樹

3.3.4.2 刪除最小鍵

最後能夠得到承恩含有最小鍵的3-結點或4-結點,直接將其刪除,然後再回頭向上分解所有臨時的4-結點

3.3.4.3 刪除操作3.3.5.1 效能分析

一棵大小為n的紅黑樹的高度不會超過2lgn。

一棵大小為n的紅黑樹中,根結點到任意結點的平均路徑長度為~1.00lgn

3.3.5.2 有序符號表api
在一棵紅黑樹中,以下操作在最壞情況下所需的時間是對數級別的:查詢(get())、插入(put())、查詢最小鍵、查詢最大鍵、floor()、ceiling()、rand()、select()、刪除最小鍵(deletemin())、刪除最大鍵(deletemax())、刪除(delete())和範圍查詢(range())。

演算法(資料結構)

最壞情況下查詢時間

最壞情況下插入時間

平均情況下查詢時間

平均情況下插入時間

是否支援有序性相關的操作

順序查詢(無序鍊錶)nn

n/2n

否二分查詢(有序陣列)

lgnn

lgnn/2

是二叉樹查詢(bst)nn

1.39lgn

1.39lgn

是2-3樹查詢(紅黑樹)

2lgn

2lgn

1.00lgn

1.00lgn

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...

第三章讀書筆記

本章是講了git的使用入門,為學習本書的人展示了git的基本用法。儘管git並不是學習android移植和linux核心 驅動開發必須掌握的技術。但對於深入研究這些底層技術的人來說,git將成為學習過程中必不可少的工具。git是什麼,git就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...

第三章 查詢 一 《演算法》讀書筆記

目錄3.1.2 有序符號表 3.1.4 無序鍊錶中的順序查詢 3.1.5 有序陣列中的二分查詢 3.1.6 對二分查詢的分析 3.1.7 預覽 符號表是一種儲存鍵值對的資料結構,支援兩種操作 插入 put 即將一組新的鍵值對存入表中 查詢 get 即根據給定的鍵得到相應的值 3.1.1.2 重複的鍵...