二叉树后序遍历——欢聚时代2017校招笔试

题目描述

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

输入描述

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

输出描述

对应输出后序遍历序列

示例

输入

ABDEC DBEAC

输出

DEBCA

题目解析

我们可以先通过先序序列和中序序列来构建出整个二叉树,然后再对整个二叉树进行后序遍历。

代码

import java.util.*;

    class TreeNode{
        char val;
        TreeNode left;
        TreeNode right;
        TreeNode(char val){
            this.val = val;
        }
    }
public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            char[] pre = sc.next().toCharArray();
            char[] in = sc.next().toCharArray();
            TreeNode root = building(pre,in);
            after(root);
        }
        public static TreeNode building(char[] pre,char[] in){
            if(pre.length==0||in.length==0)
                return null;
            TreeNode root = new TreeNode(pre[0]);
            for(int i =0;i<in.length;i++){
                if(in[i]==pre[0]){
                    root.left=building(Arrays.copyOfRange(pre,1,i+1),Arrays.copyOfRange(in,0,i));
                    root.right=building(Arrays.copyOfRange(pre,i+1,pre.length),Arrays.copyOfRange(in,i+1,in.length));
                    
                }
            }
            return root;
        }
        public static void after(TreeNode root){
            if(root == null)
                return;
            after(root.left);
            after(root.right);
            System.out.print(root.val);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值