樹
樹的相關概念
-
樹結構的特點:
- 每個結點有零個或多個子結點;
- 沒有父結點的結點稱爲根結點;
- 每一個非根結點有且只有一個父結點;
- 除了根結點外,每個子結點可以分爲多個不相交的子樹
-
節點的度:該節點所擁有的子樹個數
-
樹的度:樹中度最大節點的度就是該樹的度
-
葉子(終端)節點:度爲0的節點
-
雙親節點或父節點:若一個節點含有子節點,則這個節點稱爲其子節點的父節點; 如上圖:A是B的父節點
-
孩子節點或子節點:一個節點含有的子樹的根節點稱爲該節點的子節點; 如上圖:B是A的孩子節點
-
節點的層次:從根開始定義,根爲第一層,根的子節點爲第二層,以此類推 也有種說法根節點爲第0層,所以沒有特殊說明的話,默認根節點是第一層
-
樹的高度/深度:節點的最大層次
-
非終端節點/分支節點:度不爲0的節點
-
兄弟節點:有相同雙親,比如B,C就是兄弟節點
-
堂兄弟節點:雙親在同一層的節點,H和I就是堂兄弟節點
-
森林:m棵互不相交的樹
樹的表示形式
-
孩子表示法
節點中既要保存值域,也要保存孩子節點的地址
優點:找某個節點的孩子節點方便
缺點:找雙親節點不方便 -
雙親表示法
節點中既要保存值域,還要保存雙親的地址
優點:找節點的雙親比較方便
缺點:找節點的孩子不方便 -
孩子雙親表示法
孩子表示和雙親表示結合起來,節點中既保存值域,也要保存節點的孩子以及雙親的地址 -
孩子兄弟表示法(常用)
要保存第一個孩子節點,和當前節點的下一個兄弟節點
二叉樹!!很重要哦
二叉樹的相關概念
-
二叉樹的特點:
- 二叉樹是一棵有序樹,左右子樹的次序不能顛倒
- 二叉樹中一定不會存在度大於2的節點
-
滿二叉樹:二叉樹中每層節點個數達到最大值
第i層 2^(i-1)個節點
如果一個滿二叉樹共n層,則共 2^-1個節點 -
完全二叉樹
如果一顆具有n個節點的二叉樹與滿二叉樹前n個節點的連接形式一樣(好好理解這句話),將該二叉樹稱爲完全二叉樹
==》- 滿二叉樹是一顆特殊的完全二叉樹,但完全二叉樹不一定是滿二叉樹
- 完全二叉樹中一定不會存在某節點只有右孩子沒有左孩子的情況
二叉樹的性質
-
在二叉樹的第i(i>=1)層最多有2^(i - 1)個結點。
-
深度爲k(k>=0)的二叉樹最少有k個結點,最多有2^k-1個結點。
-
對於任一棵非空二叉樹,若其葉結點數爲n0,度爲2的非葉結點數爲n2,則n0 = n2 +1。
-
對於具有n個節點的完全二叉樹,如果按照從上到下從左至右的順序對所有節點從0開始編號,則對於需要爲i的節點有:
- 若i > 0,雙親序號:(i -1)/ 2 ;i = 0,i爲根節點編號,無雙親節點
- 若2i + 1 < n,左孩子序號:2i + 1,否則無左孩子
- 若2i + 2 < n,右孩子序號:2i + 2,否則無左孩子
-
如果完全二叉樹中的節點個數是偶數個,一定有一個節點只有左孩子
-
如果完全二叉樹中的節點個數是奇數個,一定沒有隻有左孩子的節點
-
【例題】假設一顆完全二叉樹中總共有1000個節點,則該二叉樹中_500___個葉子節點,__500__個非葉子節點,__1__個節點只有左孩子,__0__個節點只有右孩子