二叉树后序遍历 python

题目描述

给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。

输入描述:

输入为一行。 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔。保证数据合法

输出描述:

对应输出后序遍历序列

示例1

输入

ABDEC DBEAC

输出

DEBCA

采取的是先重建二叉树,然后后序遍历的方法

# -*- coding:utf-8 -*-
import sys
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if not pre or not tin:
            return None
        else:
            node = TreeNode(pre[0])
            index = tin.index(node.val)
        node.left = self.reConstructBinaryTree(pre[1:index+1], tin[:index])
        node.right = self.reConstructBinaryTree(pre[index+1:], tin[index+1:])
        return node

    def read(self, node):
        if not node:
            return []
        else:
            return self.read(node.left)+self.read(node.right)+[node.val]
ss = Solution()
line = sys.stdin.readline().strip()
arr = line.split(' ')
pre = list(arr[0])
tin = list(arr[1])
resultput = ss.read(ss.reConstructBinaryTree(pre, tin))
print(''.join(i for i in resultput))

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值