數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)第四彈 樹與二叉樹(1)

樹,這是一棵樹,這是一種非線性結(jié)構(gòu)。在前面我們所學(xué)習(xí)的都是線性結(jié)構(gòu),而他們的特點是表中的元素相互之間都是線性關(guān)系,邏輯較為清晰,容易進行查找、插入和刪除操作,這種數(shù)據(jù)結(jié)構(gòu)描述的是一種元素只唯一前驅(qū)元素和唯一后繼元素的模型。
而樹這種非線性結(jié)構(gòu)是相對于線性結(jié)構(gòu)而言的,相比起線性結(jié)構(gòu)中元素之間一對一的關(guān)系,樹型結(jié)構(gòu)中元素之間是一對多的關(guān)系。樹是一種十分重要的非線性結(jié)構(gòu)。

樹的基本概念

樹的定義

樹是n(n>=0)個元素的的有限集合,既然被叫做樹,那么自然有根有葉子。在任何一顆非空樹中:

  • 有且僅有一個節(jié)點被稱為根節(jié)點,而且我們一般把根節(jié)點提到整棵數(shù)的最上面
  • 當(dāng)n>1時,除根以外的其余節(jié)點可一被分為m(m>0)個互不相交的有限集合T1,……,Tn,其中每一個集合本身又是一顆樹,并且稱為根的子樹

這真的是個很繞的東西,不過由此可以看出,樹的定義是具有遞歸性的,即樹中有樹,當(dāng)一顆樹只有一個節(jié)點時,該節(jié)點被稱為根節(jié)點。當(dāng)有多個節(jié)點時,除了根節(jié)點外,它還有多棵子樹,每棵子樹都互不相交。

樹的相關(guān)術(shù)語


一般而言,就像圖片描述的,圖中的圓圈代表節(jié)點,線代表邊,圈內(nèi)的東東就是這個節(jié)點的信息。

  • 節(jié)點:樹中的數(shù)據(jù)元素稱為節(jié)點,每個節(jié)點都保存了該節(jié)點的信息,即數(shù)據(jù)元素和數(shù)據(jù)項與數(shù)據(jù)元素之間的關(guān)系
  • 節(jié)點的度:節(jié)點擁有子樹的個數(shù)
  • 樹的度:樹中各節(jié)點的度的最大值
  • 葉子節(jié)點: 樹中度為0的節(jié)點,也叫做終端節(jié)點
  • 分支節(jié)點: 樹中度不為0的節(jié)點,稱為分支節(jié)點或非終端節(jié)點
  • 兒子:節(jié)點子樹的根,兒子節(jié)點簡稱為子節(jié)點
  • 父親:有兒子的就是父親,父親節(jié)點簡稱為父節(jié)點
  • 兄弟:有同一父親的節(jié)點被稱為兄弟節(jié)點
  • 堂兄弟:位于同一層,但是沒有同一父親的子節(jié)點稱為堂兄弟
  • 樹的深度:樹中節(jié)點節(jié)點的最大層數(shù),圖中的樹深度為3
  • 節(jié)點的層次:從根節(jié)點開始,根為第一層,根的孩子為第二層,以此類推,如果某節(jié)點在第k層,那么其子樹的根就在k+1層。
  • 根:唯一一個沒有前驅(qū)的節(jié)點(無父節(jié)點),此節(jié)點為根節(jié)點
  • 森林: 指m棵互不相交的樹的集合,一棵樹的子樹就構(gòu)成一個森林
  • 有序樹: 如果樹中節(jié)點的各棵子樹規(guī)定從左至右是有序的(不能互換),則稱為有序樹,否則稱為無序樹。二叉樹就是一種有序樹。
  • 無序樹:不是有序樹就是無序樹了(= =||),就是節(jié)點的各個子樹可以互換位置

二叉樹

樹型結(jié)構(gòu)中有一種特殊的樹叫做二叉樹,二叉樹的結(jié)構(gòu)也比較簡單,規(guī)律性較強,并且可以證明,即使一般的樹也能轉(zhuǎn)化成二叉樹。而且許多實際問題抽象出來的數(shù)據(jù)結(jié)構(gòu)往往就是二叉樹的形式。

二叉樹的定義

二叉樹是個有限元素的集合,該集合為空或者由一個根和兩個互不相交的左子樹和右子樹組成。在二叉樹中,一個元素也稱為一個節(jié)點。

二叉樹的基本特征:

  • 每個節(jié)點最多只有兩棵子樹,即不存在度大于2的節(jié)點
  • 左子樹和右子樹次序不能顛倒,即二叉樹是有序樹,而且哪怕只有
    一顆子樹,也要區(qū)分是左子樹還是右子樹。

二叉樹有五中基本形態(tài):

  • 空集
  • 根有兩顆子樹
  • 根只有一顆子樹(左子樹或右子樹)
  • 根沒有子樹

在二叉樹中有兩種特殊的二叉樹:滿二叉樹和完全二叉樹

滿二叉樹

在一棵樹中所有的分支節(jié)點都存在左子樹和右子樹,并且所有的葉子節(jié)點都在同一層上,這樣的二叉樹稱為滿二叉樹。


滿二叉樹

完全二叉樹

一棵深度為k且具有n個節(jié)點的二叉樹,對樹中節(jié)點按從上至下,從左至右的順序進行編號,當(dāng)且僅當(dāng)節(jié)點都與深度為k的滿二叉樹中編號從1至n的節(jié)點一一對應(yīng)
時,才稱這棵二叉樹為完全二叉樹。顯然滿二叉樹也是完全二叉樹的一種。
完全二叉樹的特點:

  • 葉子節(jié)點只可能在層次最大的兩層上出現(xiàn)
  • 對任一節(jié)點,其右分支下的兒子的最大層次為h,則其左分支下的兒子最大層次為
    h或h+1


    完全二叉樹
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容