实现一个功能: 输入:一颗二叉树的先序和中序遍历 输出:后续遍历 思想: 先序遍历中,第一个元素是树根 在中序遍历中找到树根,左边的是左子树 右边的是右子树
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)
时间: 2024-10-15 04:12:33