資料結構 - Tree 的介紹(使用Python)

Tree()是一種相當常見的資料結構,用途也相當廣泛,Tree()同時也表示了資料的階層關係,首先認識一下樹的幾個比較重要的名詞和特徵

Tree 結構示意圖(圖一)

WLW-UNATTACHED

Tree 相關名詞解釋

1. Node(節點):每一個被Tree所連接到的點,都可被稱作這棵樹的Node(節點)

2. Root(根節點):每一個Tree最初(或最上層)的節點,每個Tree都只有一個Root(根節點),如圖一節點A

3. Parent Node(父節點):除了Root以外,每一個Node都會有一個Parent(父節點),如圖一節點B是節點DParent Node

4. Child Node(子節點):每一個Parent都會有Child(子節點),如圖一節點L是節點EChild Node

5. Leaf Node():每一個沒有子節點的節點都是Leaf Node,如圖一節點GHJKLM都是Leaf Node

6. Depth(深度):指Tree總共有幾個階層(又或稱HeightLevel),依圖一的範例,則Tree的深度為 4

 

Tree 的特徵

1. 任意兩點中,只有一條相連的路徑且無法循環(如下圖)

WLW-UNATTACHED

 

2. 每一個點只會有一個父節點。

3. 每個Tree都會有一個Root,但是Root沒有父節點。

4. 子樹之間沒有交集。

 

下面附上Tree的範例程式(使用Python撰寫)

class treeNode:
     def __init__(self, val):
         #
初始化節點
         self.val = val
         self.left = None
         self.right = None

    def insertLeft(self, val):
         #
如果要新增左邊節點,先檢查是否已存在,若左節點不存在則放入左節點
         if self.left == None:
             self.left = treeNode(val)

         #
如果左節點已經存在,則放入左節點的下一層左節點,這邊用遞迴的方式進行搜尋,直到可以讓入左節點為止
         else:
             self.left.insertLeft(val)
    
     def insertRight(self, val):

         #
新增右邊節點的方式則和新增左節點的方式相同
         if self.right == None:
             self.right = treeNode(val)
         else:
             self.right.insertRight(val)

# 執行方式
sampleTree = treeNode(5)
sampleTree.insertRight(7)
sampleTree.insertRight(8)
sampleTree.insertLeft(3)
sampleTree.insertLeft(2)
sampleTree.right.insertLeft(6)
sampleTree.left.insertRight(4)

# 執行結果

WLW-UNATTACHED

 

   如果覺得對你有幫助的話. 請幫小弟按個讚吧~

 

資料結構相關文章:

 

      氣泡排序法 - 使用Python (Bubble Sort)

 

      插入排序法 - 使用Python(Insertion Sort)

 

      合併排序法 - 使用Python(Merge sort)

 

Python相關文章:

python import 路徑說明

python tuple資料讀取、合併、查詢

python使用matplotlib畫折線圖(Line chart)

Python - list的讀取、增加、刪除、修改方法

python dict資料讀取、新增、修改

python使用matplotlib畫圓餅圖(Pie chart)

pandas Dataframe常用的資料處理方法-上(合併資料、選擇欄位、刪除欄位、刪除列)

 

arrow
arrow
    全站熱搜

    newaurora 發表在 痞客邦 留言(1) 人氣()