Python 二叉樹
python 二叉樹
樹表示由邊連接的節點。它是一個非線性數據結構。它具有以下屬性。
- 一個節點被標記為根節點。
- 除根之外的每個節點都與一個父節點相關聯。
- 每個節點可以有一個數字的節點號。
我們使用前面討論的概念os節點在python中創建一個樹數據結構。我們將一個節點指定為根節點,然后將更多節點添加為子節點。下面是創建根節點的程序。
創建根
我們只需創建一個node類并添加一個值給節點。這變成只有根節點的樹。
class node: def __init__(self, data): self.left = none self.right = none self.data = data def printtree(self): print(self.data) root = node(10) root.printtree()
當上面的代碼被執行時,它會產生以下結果 -
10
插入樹中
為了插入到樹中,我們使用上面創建的相同節點類并為其添加插入類。insert類將節點的值與父節點進行比較,并決定將其添加為左節點或右節點。最后,printtree類用于打印樹。
class node: def __init__(self, data): self.left = none self.right = none self.data = data def insert(self, data): # compare the new value with the parent node if self.data: if data < self.data: if self.left is none: self.left = node(data) else: self.left.insert(data) elif data > self.data: if self.right is none: self.right = node(data) else: self.right.insert(data) else: self.data = data # print the tree def printtree(self): if self.left: self.left.printtree() print( self.data), if self.right: self.right.printtree() # use the insert method to add nodes root = node(12) root.insert(6) root.insert(14) root.insert(3) root.printtree()
當上面的代碼被執行時,它會產生以下結果 -
3 6 12 14
travesring一棵樹
樹可以通過決定訪問每個節點的序列來遍歷。我們可以清楚地看到,我們可以從一個節點開始,然后訪問左側子樹第一個和右側子樹。或者我們也可以先訪問右邊的子樹,然后訪問左邊的子樹。因此,這些樹遍歷方法有不同的名稱。我們在這里實現樹遍歷算法的章節中詳細研究它們。