题目:输出二叉树
题目描述
我们知道二叉树的先序序列和中序序列或者是中序和后序能够唯一确定一颗二叉树。现在给一颗二叉树的先序序列和中序序列,要求输出它的后序序列。
输入
多组测试数据,每组测试数据格式如下:
第一行为先序序列
第二行为中序序列
输出
输出该二叉树的后序序列。
样例输入
ABFCDGHEI
BFAGDHCIE
样例输出
FBGHDIECA
import java.util.Scanner;
public class Main {
static int index = 0; //全局变量,用于遍历before序列
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String before = cin.nextLine(); // 先序
String middle = cin.nextLine(); //中序
getAfter(before, middle);
}
public static void getAfter(String before, String middle){
if(middle.length() == 0){ 递归终止条件,叶子节点为零时,停止递归
return ;
}
char root = before.charAt(index++); //index每次递归加1,用以获取before序列中的下一个根字符
int i = middle.indexOf(root); //获取根在中序遍历中出现的位置,以此切割中序遍历的字符串
//将middle字符串,得到left和right两部分
String left = middle.substring(0, i);
String right = middle.substring(i+1);
// 依次进行遍历
getAfter(before, left);
getAfter(before, right);
// 输出后序序列
System.out.print(root);
}
}