先序:根左右
中序:左根右
后序:左右根
按照这个顺序进行递归遍历
最后进行整合返回成数组,这里参看我的另一个题解
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整型二维数组
*/
ArrayList<Integer> One = new ArrayList<Integer>();
ArrayList<Integer> Two = new ArrayList<Integer>();
ArrayList<Integer> Three = new ArrayList<Integer>();
public int[][] threeOrders(TreeNode root) {
// write code here
first(root);
Second(root);
Third(root);
int n=One.size();
int[][] count=new int[3][n];
Integer[] one=One.toArray(new Integer[n]);
Integer[] two=Two.toArray(new Integer[n]);
Integer[] three=Three.toArray(new Integer[n]);
for (int i = 0; i < n; i++) {
count[0][i]=one[i];
count[1][i]=two[i];
count[2][i]=three[i];
}
return count;
}
void first(TreeNode root) {
if (root==null)
return;
One.add(root.val);
first(root.left);
first(root.right);
}
void Second(TreeNode root) {
if (root==null)
return;
Second(root.left);
Two.add(root.val);
Second(root.right);
}
void Third(TreeNode root) {
if (root==null)
return;
Third(root.left);
Third(root.right);
Three.add(root.val);
}
} 
京公网安备 11010502036488号