【算术】输入后序遍历,中序遍历,输出层次遍历

一棵二叉树,分布大写英文字母(最多26个);输入后序遍历,中序遍历的结果。输出层次遍历的结果。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String hx =sc.next();  //后序遍历的字符串
        String zx = sc.next();      //中序遍历的字符串
        //hx:2315764  zx:1234567
        String[] s = new String[]{"", "", "", "", ""};  //最多五层
        int i = 0;
        String r = "";
        String[] zxc = zxc(hx, zx, i, s);
        for (int i1 = 0; i1 < zxc.length; i1++) {
            r+=zxc[i1];
        }
        System.out.println(r);//4163572

    }
    
    /**
     *
     * @param String hx 后序遍历的值
     * @param String zx 中序遍历的值
     * @param int i 二叉树的层级,根节点为0层
     * @param String [] s 每层二叉树作为数组的一个元素,初始各个元素为"",
     * @return String [] s
     */
    public static String[] zxc(String hx, String zx, int i, String[] s) {
        String ss = String.valueOf(hx.charAt(hx.length() - 1)); //根节点
        s[i] += ss;
        String[] zs = zx.split(s[i].substring(s[i].length()-1));
        String hl = hx.substring(0, zs[0].length());
        String hr = hx.substring(zs[0].length(), hx.length() - 1);

        i = i + 1;
        if (i < 4 && hl.length() > 1) {
            zxc(hl, zs[0], i, s);
        } else {
                s[i] += zs[0];

        }
        if (i < 4 && hr.length() > 1) {
            zxc(hr, zs[1], i, s);
        } else {if(zs.length>1){
                s[i] += zs[1];}
        }
        return s;
    }
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值