資料結構之「樹」

清塵閒聊發表於2019-03-24

什麼是樹?

是由n(n>0)個有限節點組成一個具有層次關係的集合,一個父節點有 0 個或多個子節點。
用樹結構來表示一對多的關係。
樹的特點:

  1. 沒有父節點的節點稱為根節點。
  2. 每一個非根節點有且只有一個父節點。
  3. 除了根節點外,每個子節點可以分為多個不相交的子樹。
  4. 每個節點都 0 個或多個子節點。
  5. 樹裡沒有環路,就是節點只能向下衍生,跟樹一樣,不能相交於其它子樹。
    資料結構之「樹」

樹的術語

根節點:沒有父幾點,並且每棵樹只有一個根節點。
父節點:若一個節點含有子節點,則這個節點稱為其子節點的父節點。
子節點:一個節點含有的子樹的根節點稱為該節點的子節點。
葉子節點:最底層的,度為零的節點。
兄弟節點:具有相同父節點的節點互稱為兄弟節點。
堂兄弟節點:父節點在同一層的節點互為堂兄弟。
分支節點:中間的,度不為零的節點。
節點的度:一個節點含有的子樹的個數稱為該節點的度。
樹的度:一棵樹中,最大的節點的度稱為樹的度。
深度:對於任意節點 n, n 的深度為從根到 n 的唯一路徑長,根的深度為 0。
高度:對於任意節點 n, n 的高度為從 n 到一片樹葉的最長路徑,所有葉子節點的高度為 0。
節點的祖先:從根到該節點所經分支上的所有節點。
節點的子孫:以某節點為根的子樹中任一節點都稱為該節點的子孫。
節點的層次:從根開始定義起,根為第 1 層,根的子節點為第 2 層,以此類推。
森林:由m(m >= 0)棵互不相交的樹的集合稱為森林。

總結

樹 實際上就是表示一對多的關係,陣列和連結串列遍歷查詢時間複雜度是 O(n),當 n 很大時,就非常影響查詢效率,因此需要其他的資料結構來解決此類問題。就像二叉查詢樹、平衡二叉樹、B樹、B+樹等,都是用來解決查詢效率低的。

預告

後續會有二叉查詢樹、平衡二叉樹、B樹、B+樹、圖等內容,歡迎關注,讓我們一起交流討論計算機基礎。

相關文章