算法训练 求先序排列 递归 二叉树

/*
* @author :
* @version : 2018/3/16 21:06.
* 说明:
*/

import java.util.Scanner;

/**
*

 
* 算法训练 求先序排列
时间限制:1.0s 内存限制:256.0MB
锦囊1
后序的最后一个字母为根结点。

问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
两行,每行一个字符串,分别表示中序和后序排列
输出格式
一个字符串,表示所求先序排列

样例输入
BADC
BDCA
样例输出
ABCD
*
*
*/

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String DLR = sc.next(); // 前循遍历排列
        String LRD = sc.next(); // 后序遍历排列
        f(DLR,LRD);

    }

    private static void f(String DLR, String LRD) {
        //  后序的最后一个字母为根结点
        char root = LRD.charAt(LRD.length()-1);
        System.out.print(root);

        int position = DLR.indexOf(root);

        if (position > 0) {
            f(DLR.substring(0,position), LRD.substring(0,position));
        }

        if (position < LRD.length() -1) {
            f(DLR.substring(position+1), LRD.substring(position, DLR.length()-1));
        }

    }


}

版权声明:本文为weixin_35040169原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。