資料結構之二叉樹(python實現)

2021-10-23 17:50:57 字數 2098 閱讀 5123

#建立二叉樹,

class

node

:def

__init__

(self,data)

: self.left=

none

self.right=

none

self.data=data

#插入資料

definsert

(self,data):if

(self.data):if

(data(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

#列印根節點

defprintdata

(self)

:print

(self.data)

#深度優先遍歷:包含前序遍歷,中序遍歷,後序遍歷

#前序遍歷:根節點,左子樹,右子樹

deffore

(self):if

(self.data)

:print

(self.data)

if(self.left)

: self.left.fore()if

(self.right)

: self.right.fore(

)#中序遍歷:左子樹,根節點,右子樹

defmid

(self):if

(self.left)

: self.left.mid(

)print

(self.data)

if(self.right)

: self.right.mid(

)#後序遍歷:左子樹,右子樹,根節點

defback

(self):if

(self.left)

: self.left.back()if

(self.right)

: self.right.back(

)print

(self.data)

#廣度優先遍歷:包含層序遍歷

#層序遍歷:層次關係橫向遍歷

defceng

(self,root)

: queue =

cur =

[root]

while cur:

cur_layer_val =

next_layer_node =

for node in cur:

if node:

next_layer_node.extend(

[node.left, node.right]

)if cur_layer_val:

queue.insert(

0, cur_layer_val)

cur = next_layer_node

print

(queue)

#初始化根節點

root=node(5)

#插入節點

root.insert(4)

root.insert(7)

root.insert(3)

root.insert(8)

#根節點

root.printdata(

)#前序遍歷

root.fore(

)#中序遍歷

root.mid(

)#後序遍歷

root.back(

)#層序遍歷

root.ceng(root)

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...

資料結構之二叉樹

定義 滿足以下條件的就是樹 1.有且僅有乙個特定的稱為根root的結點。2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是乙個棵樹,並稱為根的子樹。樹是資料結構中一種常見的資料結構,比如我們排序中常見的二叉樹,紅黑樹等。最常見的是樹形表示法和廣義表表示法。樹的結構示意...

資料結構之二叉樹

來看一下樹的結構 class treenode public treenode string value 首先,為了方便後面看到效果,先手動初始化乙個有4個節點的二叉樹 tree tree new tree treenode root new treenode root treenode node1...