1. 程式人生 > >給出二叉樹的先序和中序遍歷,給出後序遍歷

給出二叉樹的先序和中序遍歷,給出後序遍歷

logs __main__ font class pre span 思想 style 輸出

實現一個功能:
輸入:一顆二叉樹的先序和中序遍歷
輸出:後續遍歷

思想: 先序遍歷中,第一個元素是樹根
在中序遍歷中找到樹根,左邊的是左子樹 右邊的是右子樹
 1 def fromFMtoL(  mid ):
 2     global las  #全局後序遍歷
 3     global fir  #先序遍歷
 4 
 5     root = fir[0]   #取出當前樹根
 6 
 7     fir = fir[1:]   #取出樹根後 先序遍歷把根拿出來 下面一個元素做樹根
 8     root_po = mid.find( root )  #在中序遍歷當中樹根的位置
9 left = mid[0:root_po] #左子樹 10 right = mid[root_po+1:len(mid)] #右子樹 11 12 ‘‘‘ 13 後序遍歷: 左 右 根 14 先左子樹 再右子樹 最後跟 15 ‘‘‘ 16 17 #有左子樹的時候 18 if len(left) > 0: 19 fromFMtoL( left ) 20 #有右子樹的時候 21 if len(right) > 0: 22 fromFMtoL( right ) 23 24
#樹根寫進結果 25 las += root 26 27 28 29 if __name__ == "__main__" : 30 # fir = input("請輸入先序遍歷:") #前序遍歷的結果 31 # mid = input("請輸入中序遍歷:") #中序遍歷的結果 32 fir = "DBACEGF" 33 mid = "ABCDEFG" 34 # fir = "ABC" 35 # mid = "BAC" 36 las = "" 37 fromFMtoL( mid ) 38 39
print(las)

給出二叉樹的先序和中序遍歷,給出後序遍歷