 Hello 算法 1.2.0 繁体中文 C# 版147 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . (string kv in res) { Console.WriteLine(kv); } } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.79 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 C# 版147 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . (string kv in res) { Console.WriteLine(kv); } } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Dart 版147 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . add("${pair.key} -> ${pair.val}"); } print(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 378 页 | 18.77 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Dart 版147 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . add("${pair.key} -> ${pair.val}"); } print(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 378 页 | 18.77 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Go 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.6 小結 . WriteString("]") fmt.Println(builder.String()) builder.Reset() } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 www.hello‑algo.com 160 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 圖 7‑24 AVL 樹在刪除節點後發生退化 再例如,在圖 7‑25 所0 码力 | 385 页 | 18.80 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Go 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.6 小結 . WriteString("]") fmt.Println(builder.String()) builder.Reset() } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 www.hello‑algo.com 160 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 圖 7‑24 AVL 樹在刪除節點後發生退化 再例如,在圖 7‑25 所0 码力 | 385 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Kotlin 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . pair._val res.add("$k -> $v") } println(res) } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 382 页 | 18.79 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Kotlin 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . pair._val res.add("$k -> $v") } println(res) } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 382 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Java 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . -> " + pair.val); } System.out.println(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.79 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Java 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . -> " + pair.val); } System.out.println(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 JavaScript 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . key + ' -> ' + pair.val); } console.log(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.78 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 JavaScript 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 7.6 小結 . key + ' -> ' + pair.val); } console.log(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 159 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 379 页 | 18.78 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 TypeScript 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . key + ' -> ' + pair.val); } console.log(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 384 页 | 18.80 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 TypeScript 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . key + ' -> ' + pair.val); } console.log(res); } } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 160 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 384 页 | 18.80 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Swift 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . Swift.print(res) } 第 6 章 雜湊表 www.hello‑algo.com 123 } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 www.hello‑algo.com 159 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 圖 7‑24 AVL 樹在刪除節點後發生退化 再例如,在圖 7‑25 所0 码力 | 379 页 | 18.79 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Swift 版146 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.6 小結 . Swift.print(res) } 第 6 章 雜湊表 www.hello‑algo.com 123 } } 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 www.hello‑algo.com 159 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 圖 7‑24 AVL 樹在刪除節點後發生退化 再例如,在圖 7‑25 所0 码力 | 379 页 | 18.79 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Ruby 版144 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7.6 小結 . "#{pair.key} -> #{pair.val}" end pp res end end end 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 157 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 372 页 | 18.75 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Ruby 版144 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7.6 小結 . "#{pair.key} -> #{pair.val}" end pp res end end end 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 157 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 372 页 | 18.75 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Python 版140 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.6 小結 . res.append(str(pair.key) + " -> " + pair.val) print(res) 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 152 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 364 页 | 18.74 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Python 版140 7.4 二元搜尋樹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 7.5 AVL 樹 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 7.6 小結 . res.append(str(pair.key) + " -> " + pair.val) print(res) 值得注意的是,當鏈結串列很長時,查詢效率 ?(?) 很差。此時可以將鏈結串列轉換為“AVL 樹”或“紅黑 樹”,從而將查詢操作的時間複雜度最佳化至 ?(log ?) 。 6.2.2 開放定址 開放定址(open addressing)不引入額外的資料結構,而是透過“多次探測”來處理雜湊衝突,探測方式主 用於儲存資料流,以保持其有序狀態。 7.5 AVL 樹 * 在“二元搜尋樹”章節中我們提到,在多次插入和刪除操作後,二元搜尋樹可能退化為鏈結串列。在這種情 況下,所有操作的時間複雜度將從 ?(log ?) 劣化為 ?(?) 。 如圖 7‑24 所示,經過兩次刪除節點操作,這棵二元搜尋樹便會退化為鏈結串列。 第 7 章 樹 www.hello‑algo.com 152 圖 7‑24 AVL 樹在刪除節點後發生退化0 码力 | 364 页 | 18.74 MB | 10 月前3
共 13 条
- 1
- 2













