雜湊 二叉樹

2022-06-07 03:54:09 字數 709 閱讀 9756

我們在雜湊表那節中講過,雜湊表的插入、刪除、查詢操作的時間複雜度可以做到常量級的 o(1),非常高效。而二叉查詢樹在比較平衡的情況下,插入、刪除、查詢操作時間複雜度才是 o(logn),相對雜湊表,好像並沒有什麼優勢,那我們為什麼還要用二叉查詢樹呢?

我認為有下面幾個原因:

第一,雜湊表中的資料是無序儲存的,如果要輸出有序的資料,需要先進行排序。而對於二叉查詢樹來說,我們只需要中序遍歷,就可以在 o(n) 的時間複雜度內,輸出有序的資料序列。

第二,雜湊表擴容耗時很多,而且當遇到雜湊衝突時,效能不穩定,儘管二叉查詢樹的效能不穩定,但是在工程中,我們最常用的平衡二叉查詢樹的效能非常穩定,時間複雜度穩定在 o(logn)。

第三,籠統地來說,儘管雜湊表的查詢等操作的時間複雜度是常量級的,但因為雜湊衝突的存在,這個常量不一定比 logn 小,所以實際的查詢速度可能不一定比 o(logn) 快。加上雜湊函式的耗時,也不一定就比平衡二叉查詢樹的效率高。

第四,雜湊表的構造比二叉查詢樹要複雜,需要考慮的東西很多。比如雜湊函式的設計、衝突解決辦法、擴容、縮容等。平衡二叉查詢樹只需要考慮平衡性這乙個問題,而且這個問題的解決方案比較成熟、固定。

最後,為了避免過多的雜湊衝突,雜湊表裝載因子不能太大,特別是基於開放定址法解決衝突的雜湊表,不然會浪費一定的儲存空間。

綜合這幾點,平衡二叉查詢樹在某些方面還是優於雜湊表的,所以,這兩者的存在並不衝突。我們在實際的開發過程中,需要結合具體的需求來選擇使用哪乙個。

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...