题解 | #实现二叉树先序,中序和后序遍历# Java版本
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362
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整型二维数组
*/
public int[][] threeOrders (TreeNode root) {
List<Integer> preList = new ArrayList<>();
preOrder(root, preList);
List<Integer> midList = new ArrayList<>();
midOrder(root, midList);
List<Integer> lastList = new ArrayList<>();
lastOrder(root, lastList);
//最后的整合
int length = preList.size();
int[] preArr = preList.stream().mapToInt(Integer::valueOf).toArray();
int[] midArr = midList.stream().mapToInt(Integer::valueOf).toArray();
int[] lastArr = lastList.stream().mapToInt(Integer::valueOf).toArray();
int[][] result = new int[3][length];
result[0] = preArr;
result[1] = midArr;
result[2] = lastArr;
return result;
}
/** 先序遍历 */
public void preOrder(TreeNode root,List<Integer> list) {
if(root==null) {
return;
}
list.add(root.val);
preOrder(root.left, list);
preOrder(root.right, list);
}
/** 中序遍历 */
public void midOrder(TreeNode root,List<Integer> list) {
if(root==null) {
return;
}
midOrder(root.left, list);
list.add(root.val);
midOrder(root.right, list);
}
/** 后序遍历 */
public void lastOrder(TreeNode root,List<Integer> list) {
if(root==null) {
return;
}
lastOrder(root.left, list);
lastOrder(root.right, list);
list.add(root.val);
}
}