题目描述
分别按照二叉树先序,中序和后序打印所有的节点。
示例1
输入
{1,2,3}
返回值
[[1,2,3],[2,1,3],[2,3,1]]
备注:
n \leq 10^6n≤10
Language: java
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
import java.util.*;
public class Solution {
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
List<Integer> preList = new ArrayList();
List<Integer> inList = new ArrayList();
List<Integer> postList = new ArrayList();
public int[][] threeOrders (TreeNode root) {
// write code here
//先序遍历 ,前中后
if(root == null) return new int[0][0];
preOrder(root);
inOrder(root);
postOrder(root);
int[][] res = new int[3][];
res[0] = preList.stream().mapToInt(Integer::intValue).toArray();
res[1] = inList.stream().mapToInt(Integer::intValue).toArray();
res[2] = postList.stream().mapToInt(Integer::intValue).toArray();
return res;
}
/**
* 前序遍历
**/
private void preOrder(TreeNode node)
{
if(node == null) return ;
preList.add(node.val);
preOrder(node.left);
preOrder(node.right);
}
/**
* 中序遍历
**/
private void inOrder(TreeNode node)
{
if(node == null) return;
inOrder(node.left);
inList.add(node.val);
inOrder(node.right);
}
private void postOrder(TreeNode node)
{
if(node == null) return;
postOrder(node.left);
postOrder(node.right);
postList.add(node.val);
}
}