题目描述
分别按照二叉树先序,中序和后序打印所有的节点。
题解
import java.util.*;
public class Solution {
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
public int[][] threeOrders (TreeNode root) {
if(root == null){
return new int[][] {{}};
}
List<Integer> listPre = new ArrayList<>();
List<Integer> listIn = new ArrayList<>();
List<Integer> listPost = new ArrayList<>();
List<List<Integer>> res = new ArrayList<>();
preOrder(root,listPre);
inOrder(root,listIn);
postOrder(root,listPost);
res.add(listPre);
res.add(listIn);
res.add(listPost);
int[][] arr = new int[res.size()][res.get(0).size()];
for (int i = 0; i < res.size(); i++) {
for (int j = 0; j < res.get(0).size(); j++) {
arr[i][j] = res.get(i).get(j);
}
}
return arr;
}
public void preOrder(TreeNode root,List<Integer> list){
if(root != null){
list.add(root.val);
preOrder(root.left,list);
preOrder(root.right,list);
}
}
public void inOrder(TreeNode root, List<Integer> list) {
if (root != null) {
inOrder(root.left, list);
list.add(root.val);
inOrder(root.right, list);
}
}
public void postOrder(TreeNode root, List<Integer> list) {
if (root != null) {
postOrder(root.left, list);
postOrder(root.right, list);
list.add(root.val);
}
}
}