目录
描述
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
数据范围:0≤n≤10000≤n≤1000,树上每个节点的val值满足 0≤val≤1000≤val≤100
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
样例解释:
如图二叉树结构
示例1
输入:
{1,2,3}
复制返回值:
[[1,2,3],[2
思想:递归
代码
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> list = new ArrayList<>();
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Integer> list2 = new ArrayList<>();
public int[][] threeOrders (TreeNode root) {
int[][] res = new int[3][];
traverse1(root);
res[0] = help(list);
traverse2(root);
res[1] = help(list1);
traverse3(root);
res[2] = help(list2);
return res;
}
public int[] help(ArrayList<Integer> arr){
int[] temp = new int[arr.size()];
int index = 0;
for(int i:arr){
temp[index++] = i;
}
return temp;
}
public void traverse1(TreeNode root){
if(root == null) return;
list.add(root.val);
traverse1(root.left);
traverse1(root.right);
}
public void traverse2(TreeNode root){
if(root == null) return;
traverse2(root.left);
list1.add(root.val);
traverse2(root.right);
}
public void traverse3(TreeNode root){
if(root == null) return;
traverse3(root.left);
traverse3(root.right);
list2.add(root.val);
}
}