1. 程式人生 > >關於紅黑樹和AVL樹,以下哪種說法不正確?----騰訊2016研發工程師線上模擬筆試題

關於紅黑樹和AVL樹,以下哪種說法不正確?----騰訊2016研發工程師線上模擬筆試題

關於紅黑樹和AVL樹,以下哪種說法不正確?

正確答案: D   你的答案: 空 (錯誤)

兩者都屬於自平衡二叉樹
兩者查詢,插入,刪除的時間複雜度相同
包含n個內部節點的紅黑樹的高度是O(log(n))
JDK的TreeMap是一個AVL的實現

關於紅黑樹和AVL樹,來自網路:

1 好處 及 用途

        紅黑樹 並不追求“完全平衡 ”——它只要求部分地達到平衡要求,降低了對旋轉的要求,從而提高了效能。

紅黑樹能夠以 O(log2  n)  的時間複雜度進行搜尋、插入、刪除操作。此外,由於它的設計,任何不平衡都會在三次旋轉之內解決。當然,還有一些更好的,但實現起來更復雜的資料結構 能夠做到一步旋轉之內達到平衡,但紅黑樹能夠給我們一個比較“便宜”的解決方案。紅黑樹的演算法時間複雜度和AVL相同,但統計效能比AVL樹更高。

        當然,紅黑樹並不適應所有應用樹的領域。如果資料基本上是靜態的,那麼讓他們待在他們能夠插入,並且不影響平衡的地方會具有更好的效能。如果資料完全是靜態的,例如,做一個雜湊表,效能可能會更好一些。

在實際的系統中,例如,需要使用動態規則的防火牆系統,使用紅黑樹而不是散列表被實踐證明具有更好的伸縮性。

典型的用途是實現關聯陣列

 AVL樹是最先發明的自平衡二叉查 找樹。在AVL樹中任何節點的兩個兒子子樹的高度最大差別為一,所以它也被稱為高度平衡樹。查詢、插入和刪除在平均和最壞情況下都是O(log n)。增加和刪除可能需要通過一次或多次樹旋轉來重新平衡這個樹。AVL樹得名於它的發明者 G.M. Adelson-Velsky 和 E.M. Landis,他們在 1962 年的論文 "An algorithm for the organization of information" 中發表了它。

引入AVL樹的目的是為了提高二叉樹的搜尋的效率,減少樹的平均搜尋長度.為此,就必須每向二叉樹插入一個結點時調整樹的結構,使得二叉樹搜尋保持平衡,從而可能降低樹的高度,減少的平均樹的搜尋長度. 

AVL樹的定義: 
一棵AVL樹滿足以下的條件: 
1>它的左子樹和右子樹都是AVL樹 
2>左子樹和右子樹的高度差不能超過1 
從條件1可能看出是個遞迴定義,如GNU一樣. 

性質: 
1>一棵n個結點的AVL樹的其高度保持在0(log2(n)),不會超過3/2log2(n+1) 
2>一棵n個結點的AVL樹的平均搜尋長度保持在0(log2(n)). 
3>一棵n個結點的AVL樹刪除一個結點做平衡化旋轉所需要的時間為0(log2(n)).

 

從1這點來看 紅黑樹是犧牲了嚴格的高度平衡的優越條件 為 代價紅黑樹能夠以O(log2 n)的時間複雜度進行搜尋、插入、刪除操作。此外,由於它的設計,任何不平衡都會在三次旋轉之內解決。當然,還有一些更好的,但實現起來更復雜的資料結構 能夠做到一步旋轉之內達到平衡,但紅黑樹能夠給我們一個比較“便宜”的解決方案。紅黑樹的演算法時間複雜度和AVL相同,但統計效能比AVL樹更高.


相關推薦

關於AVL以下種說法正確?----2016研發工程師線上模擬試題

關於紅黑樹和AVL樹,以下哪種說法不正確? 正確答案: D   你的答案: 空 (錯誤) 兩者都屬於自平衡二叉樹 兩者查詢,插入,刪除的時間複雜度相同 包含n個內部節點的紅黑樹的高度是O(log(n)) JDK的TreeMap是一個AVL的實現

關於epollselect的區別哪些說法是正確的?----2016研發工程師線上模擬試題

關於epoll和select的區別,哪些說法是正確的? 正確答案: A B C    epoll和select都是I/O多路複用的技術,都可以實現同時監聽多個I/O事件的狀態 epoll相比select效率更高,主要是基於其作業系統支援的I/O事件通知機

二維陣列X按行順序儲存其中每個元素佔1個儲存單元。若X[4][4]的儲存地址為Oxf8b82140,X[9][9]的儲存地址為Oxf8b8221c,則X----2016研發工程師線上模擬試題

二維陣列X按行順序儲存,其中每個元素佔1個儲存單元。若X[4][4]的儲存地址為Oxf8b82140,X[9][9]的儲存地址為Oxf8b8221c,則X[7][7]的儲存地址為()。

AVL的效率對比

為什麼選擇紅黑樹作為底層實現 紅黑樹是一種類平衡樹, 但它不是高度的平衡樹, 但平衡的效果已經很好了. 補充說明另一種 AVL 樹, 我之前的博文: 《程式設計珠璣,字字珠璣》讀書筆記完結篇——AVL樹 用過 STL map 麼, 你用過 linux 麼(這

秋招web後臺方向試題第二題尋找重要城市dfs解法。

問題描述:       小Q所在的王國有n個城市,城市之間有m條單向道路連線起來。對於一個城市v,從城市v出發可到達的城市數量為x,從某個城市出發可達到的城市v的城市數量為y,如果y>x,則城市v是一個重要城市(間接可達也算可以到達)。       小Q希望你能

將一個遞迴演算法改為對應的非遞迴演算法時通常需要使用( )---2014研發試卷

將一個遞迴演算法改為對應的非遞迴演算法時,通常需要使用(  )。 正確答案: D   你的答案: B (錯誤) 優先佇列 佇列 迴圈佇列 棧 新增筆記 收藏 糾錯

AVL平衡的區別

1 排序二叉樹 排序二叉樹是一種特殊結構的二叉樹,可以非常方便地對樹中所有節點進行排序和檢索。 排序二叉樹要麼是一棵空二叉樹,要麼是具有下列性質的二叉樹: • 若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值; • 若它的右子樹不空,則右子樹上所有節點的值

AVL

target 相同 spa search htm 解決 evel 所有應用 二叉搜索樹 概述:本文從排序二叉樹作為引子,講解了紅黑樹,最後把紅黑樹和AVL樹做了一個比較全面的對比。 1 排序二叉樹 排序二叉樹是一種特殊結構的二叉樹,可以非常方便地對樹中所有節點進行排

B、B+AVL

付出 而不是 通過 找到 磁盤讀寫 三次 復雜度 節點 span 定義及概念 B樹 二叉樹的深度較大,在查找時會造成I/O讀寫頻繁,查詢效率低下,所以引入了多叉樹的結構,也就是B樹。階為M的B樹具有以下性質: 1、根節點在不為葉子節點的情況下兒子數為 2 ~ M2、除根結

AVL的區別

文章目錄 紅黑樹與AVL樹的區別 紅黑樹的一個案列 英文答案 紅黑樹的高度問題 紅黑樹的優點 與AVL樹的比較 相同點 使用 紅黑樹為何能比AVL樹高效的原

、自平衡二叉AVL、B的比較

1. 紅黑樹和自平衡二叉(查詢)樹區別 紅黑樹放棄了追求完全平衡,追求大致平衡,在與平衡二叉樹的時間複雜度相差不大的情況下,保證每次插入最多隻需要三次旋轉就能達到平衡,實現起來也更為簡單。 平衡二叉樹追求絕對平衡,條件比較苛刻,實現起來比較麻煩,每次插入新節點之後需要旋轉的

B二叉排序(如)、BB+的區別

B樹是為了提高磁碟或外部儲存裝置查詢效率而產生的一種多路平衡查詢樹。 B+樹為B樹的變形結構,用於大多數資料庫或檔案系統的儲存而設計。 B樹相對於紅黑樹的區別 在大規模資料儲存的時候,紅黑樹往往出現由於樹的深度過大而造成磁碟IO讀寫過於頻繁,進而導致效率低下的情況

B應用場景總結

紅黑樹和B樹應用場景有何不同? 2者都是有序資料結構,可用作資料容器。紅黑樹多用在內部排序,即全放在記憶體中的,微軟STL的map和set的內部實現就是紅黑樹。B樹多用在記憶體裡放不下,大部分資料儲存在外存上時。因為B樹層數少,因此可以確保每次操作,讀取磁碟的次數儘可能的少

淺談二叉查詢AVL、B、B+的原理及應用

一、二叉查詢樹 1、簡介 二叉查詢樹也稱為有序二叉查詢樹,滿足二叉查詢樹的一般性質,是指一棵空樹具有如下性質: 任意節點左子樹不為空,則左子樹的值均小於根節點的值. 任意節點右子樹不為空,則右子樹的值均大於於根節點的值. 任意節點的左右子樹也分別是二叉查

BB+

首先,B樹的建立就是為了優化資料庫查詢,如果採用二叉查詢樹(時間複雜度只要LogN)來進行查詢,那麼在磁碟進行I/O操作時,(資料太大需要進行分頁)每個磁碟頁對應一個節點;最壞情況:查詢次數等於輸的高度(時間複雜度LogN), 自頂向下查詢10:需要4次 那這樣的

二叉排序AVL最簡單的理解

前言 [為什麼寫這篇] 之前在知乎上看過一個提問:為什麼紅黑樹比AVL樹用的場景更為廣泛?其實,這兩者應用場景都挺廣泛的。紅黑樹在 STL 和 Linux 都有一定的運用。而AVL樹也在 Windows程序地址空間管理 中得到了使用。既然紅黑樹和AVL樹這麼

AVL、B的比較

   AVL, 紅黑樹,B樹 前段日子在研究著這幾中樹的優劣     首先我們來談談AVL樹,AVL樹是一棵平衡的二叉查詢樹。它的平衡因子為-1,1,0不平衡達到2就會將樹進行平衡化。 AVL對數字的分佈要求比較高,比如說是隨機數,有人曾經做過計算,在利用AVL樹與紅黑樹進

VS AVL

概述:本文從排序二叉樹作為引子,講解了紅黑樹,最後把紅黑樹和AVL樹做了一個比較全面的對比。 1 排序二叉樹 排序二叉樹是一種特殊結構的二叉樹,可以非常方便地對樹中所有節點進行排序和檢索。 排序二叉樹要麼是一棵空二叉樹,要麼是具有下列性質的二叉樹: ? 若它的左子樹不空,則左子樹上所有節點的值均小於它的

刷題:輸入一顆二叉一個整數打印出二叉中結點值的為輸入整數的所有路徑。

原題:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思路分析:首先思考節點值的和為輸入的整數,每條路徑都一定是從根節點到葉子節點,在資料結構中從根節點到葉子節點的遍歷稱之為深度優先遍歷DFS。因此整

B(或B-B+B*看後悔一看必懂)

樹的深度過大而造成磁碟I/O讀寫過於頻繁,進而導致查詢效率低下 根據平衡二叉樹的啟發,自然就想到平衡多路查詢樹結構,即B樹結構(後面,我們將看到,B樹的各種操作能使B樹保持較低的高度,從而達到有效避免磁碟過於頻繁的查詢存取操作,從而有效提高查詢效率)。 為什麼說B+tre