/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
public int[][] threeOrders (TreeNode root) {
// write code here
int[][] arr = new int[3][];
List<Integer> list = new ArrayList<>();
preorder(root,list);
arr[0] = listToArray(list);
list.clear();
inorder(root,list);
arr[1] = listToArray(list);
list.clear();
postorder(root,list);
arr[2] = listToArray(list);
list.clear();
return arr;
}
public int[] listToArray(List<Integer> list){
return list.stream().mapToInt(Integer::valueOf).toArray();
}
/**
* 先序遍历的原则是:先根、再左、再右。
* @param root
* @param list
*/
private void preorder(TreeNode root, List<Integer> list){
if(root != null){
list.add(root.val);
preorder(root.left,list);
preorder(root.right,list);
}
}
/**
* 中序遍历的原则是:先左、再根、再右
* @param root
* @param list
*/
private void inorder(TreeNode root, List<Integer> list){
if(root != null){
inorder(root.left,list);
list.add(root.val);
inorder(root.right,list);
}
}
/**
* 后序遍历的原则是:先左、再右、再根
* @param root
* @param list
*/
private void postorder(TreeNode root, List<Integer> list){
if(root != null){
postorder(root.left,list);
postorder(root.right,list);
list.add(root.val);
}
}
}