Python 數(shù)據(jù)結(jié)構(gòu)

1.二叉樹構(gòu)造

class Node:
    def __init__(self,val):
        self.childleft = None
        self.childright = None
        self.nodedata = val

root = Node(1)
root.childleft = Node(2)
root.childright = Node(3)
root.childleft.childleft = Node(4)
root.childleft.childright = Node(5)

1.1中序遍歷

首先訪問左節(jié)點,然后訪問根節(jié)點,然后訪問右節(jié)點。

def InOrd(root):
    if root:
        InOrd(root.childleft)
        print (root.nodedata)
        InOrd(root.childright)
InOrd(root)  ##4 2 5 1 3

從左子樹中的所有節(jié)點開始遍歷,然后向根移動,最后向右子樹移動。


中序遍歷

1.2.前序遍歷

首先訪問根節(jié)點,然后是左子樹,然后是右子樹

def PreOrd(root):
    if root:
        print (root.nodedata)
        PreOrd(root.childleft)
        PreOrd(root.childright)
PreOrd(root)   ##1 2 4 5 3
前序遍歷

1.3.后序遍歷

后序遍歷從左邊開始,然后到右邊,最后是根。

def PostOrd(root):
    if root:
        PostOrd(root.childleft)
        PostOrd(root.childright)
        print (root.nodedata)
PostOrd(root)  ## 4 5 2 3 1
后序遍歷

2.冒泡排序

冒泡排序是一種比較算法,先比較相鄰的元素,如果它們沒有按照指定的順序怎交換下位置。

def bs(a):                   
    b=len(a)-1
    for x in range(b):
        for y in range(b-x):
            if a[y]>a[y+1]:
                a[y],a[y+1]=a[y+1],a[y]
    return a
a=[3,6,1,8]
bs(a)

3.線性搜索

線性搜索算法用于通過將給定元素與給定數(shù)組的每個元素進行比較來連續(xù)搜索給定元素。

def lin_search(myarray, n, key): 
    for x in range(0, n): 
        if (myarray[x] == key): 
            return x 
    return -1
   
myarray = [ 12, 1, 34, 17]
key = 17
n = len(myarray)
matched = lin_search(myarray, n, key) 
if(matched == -1): 
    print("未發(fā)現(xiàn)") 
else: 
    print("目標(biāo)數(shù)索引為:", matched)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容