以前沒有好好學數據結構現在需要補回來欠的賬還是要還的。

不知道大家喜不喜歡看權利的遊戲個人還是十分推薦看!十分好看!!!

看上圖這麼多人物如果你想要找某個人是不是很奔潰!!!

假如這個人自身含有一些信息。

假如你找的人是 “小惡魔” 提利昂·蘭尼斯特(個人非常喜歡他)

蘭尼斯特家族,父親是泰溫蘭尼斯特,母親是喬安娜蘭尼斯特,姐姐是瑟曦·蘭尼斯特,哥哥是詹姆·蘭尼斯特。有了這些條件查找是不是特別快!!


那樹有什麼作用呢?

權利的遊戲的家譜圖按血緣關係族類記載,這樣管理查找人是不是特別快!!!

所以樹最大的作用就是查找


樹的定義

定義參考https://blog.csdn.net/forwardyzk/article/details/53926282

樹是n(n>=0)個結點的有限集合.當n=0時,集合爲空,稱爲空樹.在任意一顆非空樹中,有且僅有一個特定的結點稱爲根.當n>1時,除根結點以外的其餘結點可分成m(m>=0)個不相交的有限結點集合T1,T2….Tm.其中每個集合本身也是一棵樹,稱爲根的子樹.
其中:
(1)有且僅有一個稱爲根的結點:它沒有前繼結點,有0個或者多個後繼結點.
(2)有若干個稱爲葉的結點:它們有且僅有一個前幾節點,而沒有後繼結點.
(3)其餘稱爲節的結點:它們有且僅有一個前繼結點,至少有一個後繼結點.

實際上,樹表示了一組結點之間不同於線性表的前繼和後繼關係的數據結構.一般而言,樹種任何一個結點只有一個前繼(根結點除外),可以有多個後繼(葉結點除外).


爲什麼樹主要講的是二叉樹???

如下圖一個樹怎麼表示呢?

如下圖這樣可以表示,但是如果有些結點的度是3、4、5那又怎麼表示呢?結點又怎麼定義呢?

孩子兄弟表示法來了

結點表示

調整一下

所以孩子兄弟表示法可以用二叉樹表示任何樹,這應該就是樹這一章重點爲什麼講二叉樹吧!


二叉樹

二叉樹定義

二叉樹 T:一個有窮的結點集合。這個集合可以爲空。若不爲空,則它是由兩棵互不相交的、分別稱爲根結點的左子樹和右子樹的二叉樹組成。

五種基本形態

  1. 空二叉樹
  2. 只有一個根結點
  3. 根結點只有左子樹
  4. 根結點只有右子樹
  5. 根結點既有左子樹又有右子樹。

二叉樹的子樹有左右順序之分

特殊二叉樹

斜二叉樹

滿二叉樹

每層都結點都滿

完全二叉樹

有n個結點的二叉樹,對樹中結點按從上至下、從左到右順序進行編號,編號爲 i(1≤i ≤n) 結點與滿二叉樹中編號爲 i 結點在二叉樹中位置相同

二叉樹幾個重要性質

  1. 一個二叉樹第 i 層最大結點數爲:2^(i-1), i≥1
  2. 深度爲k的二叉樹有最大結點總數爲:2^k -1, k≥1
  3. 對任何非空二叉樹T,若 n0 表示葉結點的個數、n2 是度爲 2 的非葉結點個數,那麼兩個滿足關係 n0=n2+1

證明 n0=n2+1

假如在二叉樹中 n0 表示葉結點個數,n1 表示度爲 1 的結點個數,n2 表示度爲 2 的結點個數。因爲邊數+1 等於結點數。

n1+2*n2+1=n0+n1+n2,所以 n0=n2+1

二叉樹存儲

順序存儲

鏈式存儲

結點

二叉樹遍歷

先序、中序、後序、按層遍歷

請看我這篇 二叉樹遍歷

總結

參考 數據結構ZJU 陳越姥姥

主要介紹了下樹的一些基礎知識,後面會再寫 BST、AVL、RBT 等樹。 以前沒好好學,欠的賬還是要還的,好好打基礎,多問爲什麼?

才學疏淺,有什麼問題請大家指出來。十分感謝!

發佈了82 篇原創文章 · 獲贊 164 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章