python實現基本演算法

2021-08-16 18:27:10 字數 2684 閱讀 8554

classnode(object):

"""建立節點類"""

def__init__(self

, elem=-1

, lchild=none, rchild=none):

self.elem = elem

self.lchild = lchild

self.rchild = rchild

"""就是每次將樹中的節點依次取出來,放入佇列,判斷"""

classtree(object):

"""建立樹類"""

def__init__(self

, root=none):

self.root = root

defadd(self

, elem):

"""為樹新增節點"""

node = node(elem)

# 如果樹是空的,則對根節點賦值

ifself.root ==none:

self.root = node

else:

queue =

#當佇列中不為空時

whilequeue:

#彈出佇列的第乙個元素

cur = queue.pop(0)

ifcur.lchild ==none:

cur.lchild = node

returnelifcur.rchild ==none:

cur.rchild = node

returnelse:

# 如果左右子樹都不為空,加入佇列繼續判斷

"""廣度優先"""

defwidth_circle(self):

ifself.rootis none:

returnqueue =

whilequeue:

cur = queue.pop(0)

print(cur.elem)

ifcur.lchildis not none:

ifcur.rchildis not none:

"""先序"""

deffirst_circle(self

,root):

ifrootis none:

returnprint(root.elem,

end=" ")

self.first_circle(root.lchild)

self.first_circle(root.rchild)

"""中序"""

defmiddle_circle(self

,root):

ifrootis none:

returnself.middle_circle(root.lchild)

print(root.elem,

end=" ")

self.middle_circle(root.rchild)

"""後序"""

defpost_circle(self

, root):

ifrootis none:

returnself.post_circle(root.lchild)

self.post_circle(root.rchild)

print(root.elem,

end=" ")

if__name__ == '__main__':

tree = tree()

tree.add(1)

tree.add(2)

tree.add(3)

tree.add(4)

tree.add(5)

tree.first_circle(tree.root)

print("")

tree.middle_circle(tree.root)

print("")

tree.post_circle(tree.root)

基本排序演算法 Python實現

基本排序演算法,包括氣泡排序,插入排序,選擇排序,堆排序,快速排序等。氣泡排序 複雜度是n n coding utf8 author haxtraz description 氣泡排序 def bubblesort1 a 每次找到乙個最小元素,放到陣列首部 n len a for i in range...

基本排序演算法 Python實現

基本排序演算法,包括氣泡排序,插入排序,選擇排序,堆排序,快速排序等。氣泡排序 複雜度是n n coding utf8 author haxtraz description 氣泡排序 def bubblesort1 a 每次找到乙個最小元素,放到陣列首部 n len a for i in range...

基本取樣演算法及Python實現

本文 見於 code 時不時地我們會在機器學習乃至深度神經網路中瞥見取樣演算法的身影。本文只關鍵簡單的入門級的取樣演算法及其python實現。將調查總體全部觀察單位進行編號,再用抽籤法隨機抽取 不放回 部分觀察單位組成樣本。ck n import random defloaddataset file...