设置一个内部类对象用来做容器,分别保存先序,中序,后序的值。
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;
}
}
}