給出二叉樹的先序和中序遍歷,給出後序遍歷
阿新 • • 發佈:2017-08-14
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)
給出二叉樹的先序和中序遍歷,給出後序遍歷