先序遍历:根,左,右
中序遍历:左,右,根
后序遍历:左,右,根
每次我们只需要传入树mid中的开始位置,和结束为止
首先,先序遍历的第一个为根元素
我们只需要遍历pre数组中的字符
并找到此字符在mid数组中的对应位置,他就是此树对应的根元素
在mid中他的左边就是他的左子树,右边就是右子树
再分别对左 右子树按照刚才的方法递归
直到开始位置>结束位置说明没有左子树或者右子树了,就输出此结点
import java.util.Scanner;
public class Main2 {
private static char[] pre;
private static char[] mid;
private static int p=-1;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
pre=sc.next().toCharArray();
mid=sc.next().toCharArray();
tree(0,pre.length-1);
System.out.println();
p=-1;
}
}
private static void tree(int start, int end) {
if(start>end) {
return;
}
p++;
for (int k = start; k <= end; k++) {
if(pre[p]==mid[k]) {
tree(start, k-1);
tree(k+1, end);
System.out.print(mid[k]);
break;
}
}
}
}