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

/*
* @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));
        }

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值