一棵二叉树,分布大写英文字母(最多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;
}
}