设置一个内部类对象用来做容器,分别保存先序,中序,后序的值。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * @param root TreeNode类 the root of binary tree
     * @return int整型二维数组
     */
    public int[][] threeOrders (TreeNode root) {
        // write code here
        int size = getSize(root);
        int[][] res = new int[3][];
        MyNums pre = new MyNums(new int[size]);
        MyNums mid = new MyNums(new int[size]);
        MyNums last = new MyNums(new int[size]);
        printFirst(root,pre);
        printMid(root,mid);
        printLast(root,last);
        res[0]=pre.getNums();
        res[1]=mid.getNums();
        res[2]=last.getNums();
        return res;
    }
    public void printFirst(TreeNode root,MyNums pre){
        if (null==root)
            return;
        pre.addNums(root.val);
        printFirst(root.left,pre);
        printFirst(root.right,pre);
    }
    public void printMid(TreeNode root,MyNums mid){
        if (null==root)
            return;
        printMid(root.left,mid);
        mid.addNums(root.val);
        printMid(root.right,mid);
    }
    public void printLast(TreeNode root,MyNums last){
        if (null==root)
            return;
        printLast(root.left,last);
        printLast(root.right,last);
        last.addNums(root.val);
    }
    public int getSize(TreeNode root){
        if (null == root)
            return 0;
        return 1+getSize(root.left)+getSize(root.right);
    }
    //内部类对象
    static class MyNums{
        private int[] nums = null;
        private int index=0;
        public MyNums(int[] nums) {
            this.nums = nums;
        }
        public void addNums(int count) {
            nums[index++]=count;
        }
        public int[] getNums() {
            return nums;
        }
    }
}