数据结构面试的常客,一文带你深入了解堆
生活随笔
收集整理的這篇文章主要介紹了
数据结构面试的常客,一文带你深入了解堆
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
和鏈表、二叉樹以及數組這些熱門的數據結構相比,堆相對比較冷門。如果你對數據結構了解不深的話,可能很少聽說。但是我們經常用到它,雖然可能你并不一定能感知到。比如說優先隊列,我們就經常使用。我們需要用到這樣一個數據結構,能夠根據我們存入數據的優先級進行排序,將優先級高的排在前面。在和調度相關的一些系統和算法當中,優先隊列是必然會用到的。但是很少有人知道,優先隊列說是一個隊列,但其實是通過堆實現的。
那么堆究竟是一個怎樣的數據結構呢?
堆的定義
堆的實質其實是二叉樹,并且還不是一般的二叉樹,而是比較特別的二叉樹。
特別在什么地方呢,在于這棵二叉樹除了葉子之外的所有節點都是“滿”的。所謂的滿,也就是沒有空缺的意思。
從上圖當中我們可以看到,如果去掉最后一層,那么這棵二叉樹就是全滿的。最后一層葉子節點也是有要求的,要求葉子節點都靠左對齊。滿足這兩個條件的二叉樹成為完全二叉樹(complete binary tree)。這個概念如果記不住也沒有關系,我好像也只在堆當中遇到。
堆是完全二叉樹,但是顯然不是所有的完全二叉樹都是堆,堆還有一個特殊的性質,就是大小的傳遞性。
堆根據大小傳遞性的不同分為大頂堆和小頂堆&
總結
以上是生活随笔為你收集整理的数据结构面试的常客,一文带你深入了解堆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode每日必刷题库第80题,如
- 下一篇: Flink从入门到精通100篇(六)-F