【牛客网-名企高频面试题】 NC45 实现二叉树先序,中序和后序遍历
题目描述:
分别按照二叉树先序,中序和后序
输入:
{1,2,3}
返回值
[[1,2,3],[2,1,3],[2,3,1]]
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整型二维数组
*/
List<Integer> front = new ArrayList<>();
List<Integer> mid = new ArrayList<>();
List<Integer> back = new ArrayList<>();
public int[][] threeOrders (TreeNode root) {
// write code here
PreOrderTraversal(root);
InOrderTraversal(root);
PostOrderTraversal(root);
int[][] res = {
front.stream().mapToInt(Integer::valueOf).toArray(),
mid.stream().mapToInt(Integer::valueOf).toArray(),
back.stream().mapToInt(Integer::valueOf).toArray()
};
return res;
}
//前序遍历
public void PreOrderTraversal(TreeNode root){
if(root == null) return;
front.add(root.val);
PreOrderTraversal(root.left);
PreOrderTraversal(root.right);
}
//中序遍历
public void InOrderTraversal(TreeNode root){
if(root == null) return;
InOrderTraversal(root.left);
mid.add(root.val);
InOrderTraversal(root.right);
}
//后序遍历
public void PostOrderTraversal(TreeNode root){
if(root == null)
return;
PostOrderTraversal(root.left);
PostOrderTraversal(root.right);
back.add(root.val);
}
}