啥也不说了,唯一一次一口气完成的题目。。。。,
思路就是根据 先中后序的特点进行 递归添加入list,最后遍历list取值即可:
public int[][] threeOrders (TreeNode root) {
LinkedList<treenode> firstList = new LinkedList<>();
LinkedList<treenode> centerList = new LinkedList<>();
LinkedList<treenode> lastList = new LinkedList<>();
addFirst(root,firstList);
addCenter(root,centerList);
addLast(root,lastList);
int [][]result = new int[3][firstList.size()];
Iterator<treenode> firstIt= firstList.iterator();
Iterator<treenode> centerIt= centerList.iterator();
Iterator<treenode> lastIt= lastList.iterator();
int i = 0;
while(firstIt.hasNext()){
result[0][i] = firstIt.next().val;
result[1][i] = centerIt.next().val;
result[2][i] = lastIt.next().val;
i++;
}
return result;
}</treenode></treenode></treenode></treenode></treenode></treenode>

public void addFirst(TreeNode root,LinkedList<TreeNode> list){
    if(root != null){
        list.add(root);
        addFirst(root.left,list);
        addFirst(root.right,list);
    }else{
        return;
    }
}
public void addCenter(TreeNode root,LinkedList<TreeNode> list){
    if(root != null){
        addCenter(root.left,list);
        list.add(root);
        addCenter(root.right,list);
    }else{
        return;
    }
}
public void addLast(TreeNode root,LinkedList<TreeNode> list){
    if(root != null){
        addLast(root.left,list);
        addLast(root.right,list);
        list.add(root);
    }else{
        return;
    }
}