public class Main {
public static class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x,TreeNode l,TreeNode r){
val = x;
left = l;
right = r;
}
}
public static void main(String[] args) {
ArrayList<Integer> preOrder = new ArrayList<>(Arrays.asList(3,9,20,15,7));
ArrayList<Integer> inOrder = new ArrayList<>(Arrays.asList(9,3,15,20,7));
TreeNode root = buildTree(preOrder,inOrder);
dfs(root);
}
public static TreeNode buildTree(List<Integer> preOrder, List<Integer> inOrder) {
System.out.println("preOrder:"+preOrder);
System.out.println("inOrder:"+inOrder);
if(preOrder.isEmpty()){
return null;
}
int val = preOrder.get(0);
int index = inOrder.indexOf(val);
TreeNode node = new TreeNode(val,null,null);
node.left = buildTree(preOrder.subList(1,index+1),inOrder.subList(0,index));
node.right = buildTree(preOrder.subList(index+1,preOrder.size()),inOrder.subList(index+1,inOrder.size()));
return node;
}
public static void dfs(TreeNode node){
if(node != null){
dfs(node.left);
System.out.println(node.val);
dfs(node.right);
}
}
}