1. 程式人生 > >Python3學習筆記(四):用Python實現深度優先

Python3學習筆記(四):用Python實現深度優先

這裡主要是用Python實現下深度優先的概念,由於程式碼寫得比較隨意,就沒有封裝成類,而是寫成一個函式

用一個列表做為實驗資料,模擬成二叉樹結構,用遞迴的方式不斷獲取二叉樹上的左節點,一直到左節點

序號超出列表範圍,然後迴歸獲取右節點,以此來實現深度優先。

以下是程式碼,程式碼以實現基本概念功能為主,比較簡陋,但是易於理解和記憶:

#****************************************************************# #深度優先函式 #左節點的規律:父節點的兩倍  tree_left = i*2 #右節點的規律:父節點的兩倍+1  tree_right = i*2 + 1 #設主節點,也就是l[0]為第一個節點,則第一個左節點就是2號節點,以此類推 #用 <= len(l)來控制節點沒有超出列表 #遞迴呼叫,一直到左節點超出列表長度,,此時表明左節點不存在,開始迴歸列印右節點 #****************************************************************# # l = [1,2,9,3,6,10,13,4,5,7,8,11,12,14] # l = [1, 2, 3, 4, 5, 6, 7, 8] l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

def deep_first(l,i=1):     if i == 1:         print(l[0])     tree_left = i*2     tree_right = i*2 + 1     if tree_left <= len(l):         print(l[tree_left-1])         deep_first(l,tree_left)     if tree_right <= len(l):         print(l[tree_right-1])         deep_first(l,tree_right)     else:         return

deep_first(l)