本文实例讲述了Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作。分享给大家供大家参考,具体如下:
实现一个功能:
输入:一颗二叉树的先序和中序遍历
输出:后续遍历
思想:
先序遍历中,第一个元素是树根
在中序遍历中找到树根,左边的是左子树 右边的是右子树
Python代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# -*- coding:utf-8 -*-
def fromFMtoL( mid ):
global las #全局后序遍历
global fir #先序遍历
root = fir[ 0 ] #取出当前树根
fir = fir[ 1 :] #取出树根后 先序遍历把根拿出来 下面一个元素做树根
root_po = mid.find( root ) #在中序遍历当中树根的位置
left = mid[ 0 :root_po] #左子树
right = mid[root_po + 1 : len (mid)] #右子树
'''
后序遍历: 左 右 根
先左子树 再右子树 最后跟
'''
#有左子树的时候
if len (left) > 0 :
fromFMtoL( left )
#有右子树的时候
if len (right) > 0 :
fromFMtoL( right )
#树根写进结果
las + = root
if __name__ = = "__main__" :
# fir = input("请输入先序遍历:") #前序遍历的结果
# mid = input("请输入中序遍历:") #中序遍历的结果
fir = "DBACEGF"
mid = "ABCDEFG"
# fir = "ABC"
# mid = "BAC"
las = ""
fromFMtoL( mid )
print (las)
|
运行结果:
ACBFGED
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/Lin-Yi/p/7355422.html