今天做前端的笔试题,第一个选择题就是已知前序和中序,求后序,突然发现自己数据结构的基础全忘了,所以上网查了查,自己写了个程序:
1.已知前序和中序,求后序:
package nowcode;
public class AfterOder {
public static void main(String[] args) {
String pr="GDAFEMHZ";
String in="ADEFGHMZ";
BinaryTreeFromOrderings(in, pr, 8);
}
public static void BinaryTreeFromOrderings(String inOrder,String prOrder,int length){
if(length == 0)
return;
TreeNode node = new TreeNode(prOrder.toCharArray()[0]);
int i=0;
for(;i<length;i++){
if(inOrder.toCharArray()[i] == prOrder.toCharArray()[0]){
break;
}
}
BinaryTreeFromOrderings(inOrder,prOrder.substring(1),i);
BinaryTreeFromOrderings(inOrder.substring(i+1),prOrder.substring(i+1),length-(i+1));
System.out.print(node.val);
return;
}
}
2.