python中基本資料結構(四)

2022-09-03 23:03:15 字數 2976 閱讀 1166

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。

二叉樹的建立:

#

建立二叉樹節點

class

treenode(object):

#初始化節點

def__init__(self,data,left_node=none,right_node=none):

self.data=data

self.left=left_node

self.right=right_node

#返回節點資訊

def__str__

(self):

return

str(self.data)

#二叉樹的輸出

def print_tree(node=none,is_child=false,deep=3):

#判斷是否有子節點沒有時直接返回

ifnot node and

is_child:

return

#輸出根節點

if is_child ==false:

print

(node)

#判斷節點是否有左右節點

if node.left==none and node.right==none:

return

print

(node.left,node.right)

return print_tree(node.left,is_child=true),print_tree(node.right,is_child=true)

if__name__ == "

__main__":

#定義乙個二叉樹[8,6,10,5,7,9,11]

root = treenode(8,

treenode(6,treenode(5),treenode(7)),

treenode(10,treenode(9),treenode(11))

)print_tree(root)

二叉樹的遍歷:

class

treenode(object):

def__init__(self,data,left_node=none,right_node=none):

self.data =data

self.left =left_node

self.right =right_node

def__str__

(self):

return

str(self.data)

defpreorder(node):

if node ==none:

return

return

print

(node),preorder(node.left),preorder(node.right)

defmid_order(node):

if node ==none:

return

return preorder(node.left),print

(node),preorder(node.right)

defafter_order(node):

if node ==none:

return

return preorder(node.left),preorder(node.right),print

(node)

if__name__ == '

__main__':

root = treenode(8,

treenode(6, treenode(5), treenode(7)),

treenode(10, treenode(9), treenode(11))

)print('前序'

) preorder(root)

print('中序'

) mid_order(root)

print('後序'

) after_order(root)

二叉樹的反**

class

tree_node(object):

def__init__(self,data,left_node=none,right_node=none):

self.data =data

self.left =left_node

self.right =right_node

def__str__

(self):

return

str(self.data)

defreverse_node(node):

ifnode:

node.left,node.right =node.right,node.left

ifnode.left:

reverse_node(node.left)

ifnode.right:

reverse_node(node.right)

return

node

defprint_node(node):

ifnode:

print(node.data,end='')

print_node(node.left)

print_node(node.right)

if__name__ == '

__main__':

root = tree_node(8,

tree_node(6,tree_node(7),tree_node(5)),

tree_node(10,tree_node(9),tree_node(11))

)node =reverse_node(root)

print_node(node)

Python 基本資料結構

列表是python裡的內建的型別之一,可以新增和刪除其中的元素。如 role sam 33 dean 37 可以列表中包含列表,同一列表中包含不同型別的資料。下面介紹列表的一些通用操作,關於list的其他用法,可以通過help list 檢視。a 2,13,12,41,17,23 a 1 列表從0開...

python 基本資料結構

1.切片 sname start?step sname 為序列名稱 start 不指定 預設為0 包含 end 不包含 step 不指定 預設為1 2.序列可以通過 相加 song1 a,b song2 c,d print song1 song2 3.序列相乘 song1 a print song1...

python中基本資料結構(三)

鍊錶是一種非連續性的資料結構,資料元素的邏輯順序是按照鍊錶的指標實現,所以鍊錶由一系列的節點組成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。class node def init self,num,next none self.num num self.n...