给出二叉树的先序和中序遍历,给出后序遍历

实现一个功能:
输入:一颗二叉树的先序和中序遍历
输出:后续遍历

思想: 先序遍历中,第一个元素是树根
在中序遍历中找到树根,左边的是左子树 右边的是右子树
 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)

 

 

转载于:https://www.cnblogs.com/Lin-Yi/p/7355422.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值