二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(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:
(node)
#判斷節點是否有左右節點
if node.left==none and node.right==none:
return
(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)
二叉樹的遍歷:
classtreenode(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
(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)
二叉樹的反**
classtree_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...