java 數據結構與算法---樹

 

1、樹的概念 

除根節點外,其他節點有且只有一個父節點。數組

一、度

 

 

節點的度:每一個節點的子節點個數。數據結構

樹的度:樹內各個節點的度的最大值。spa

樹的高度(深度):樹中節點的最大層次稱爲樹的深度。blog

節點路徑:一個節點到另一個節點的連線(樹種該路徑有且只有一條)。例如:B到J節點若是有兩條路徑,那麼該結構就不是樹。im

子樹:除根節點外的節點就是子樹。d3

葉子結點:一棵樹當中沒有子結點的結點稱爲葉子結點(即度爲0的節點),簡稱「葉子」。鏈表

 堂兄弟節點:雙親在同一層的節點互爲堂兄弟;數據

二樹的分類

順序分:db

有序樹:樹中節點的各子樹從左至右是有序的、且不能互換。img

無序樹:樹中節點的各子樹從左至右是無序的、且能互換。

 

2、樹的存儲結構

簡單的順序存儲是沒法知足樹的要求,通常咱們結合順序存儲與鏈式存儲來實現。

經常使用三種方式

一、雙親表示發

註釋:下標一列咱們能夠看成是順序存儲經過parent 記錄父類的位置;該方式咱們咱們找某個元素的父元素很簡單,可是找子元素就相對複雜。

 

 

二、雙親孩子表示法

註釋:該方式將雙親表示發與孩子表示法相結合 數組+鏈表 (HashMap的數據結構),該方式找孩子節點簡單。

 

三、孩子兄弟表示發

註釋:該方式找元素的子元素容易,但找父元素相對複雜。

相關文章
相關標籤/搜索