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) {
List<Integer> prelist = new ArrayList<>();
List<Integer> inlist = new ArrayList<>();
List<Integer> postlist = new ArrayList<>();
preorder(root,prelist);
inorder(root,inlist);
postorder(root,postlist);
int result[][] = new int[3][];
result[0] = new int[prelist.size()];
result[1] = new int[inlist.size()];
result[2] = new int[postlist.size()];
for (int i = 0; i < prelist.size(); i++){
result[0][i] = prelist.get(i);
result[1][i] = inlist.get(i);
result[2][i] = postlist.get(i);
}
return result;
}
private void preorder(TreeNode root, List<Integer> list){
if (root != null){
list.add(root.val);
if (root.left != null){
preorder(root.left,list);
}
if (root.right != null){
preorder(root.right, list);
}
}
}
private void inorder(TreeNode root, List<Integer> list){
if (root != null){
if (root.left != null){
inorder(root.left, list);
}
list.add(root.val);
if (root.right != null){
inorder(root.right, list);
}
}
}
private void postorder(TreeNode root, List<Integer> list){
if (root != null){
if (root.left != null){
postorder(root.left, list);
}
if (root.right != null){
postorder(root.right, list);
}
list.add(root.val);
}
}
}