算法思路
二叉树遍历最简单的实现方法就是使用递归的写法了,比如先序遍历:先打印根节点,然后是左子树,接着右子树;题目要求将二叉树的三种遍历结果以数组形式返回,那么我们先可以创建三个链表分别保存先序、中序和后续的遍历结果,然后将结果合并成二位数组返回即可;
算法实现
public class Solution {
private static final List<Integer> preOrderList = new ArrayList<>();
private static final List<Integer> inOrderList = new ArrayList<>();
private static final List<Integer> postOrderList = new ArrayList<>();
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型二维数组
*/
public int[][] threeOrders (TreeNode root) {
preOrder(root);
inOrder(root);
postOrder(root);
return new int[][] {
preOrderList.stream().mapToInt(Integer::intValue).toArray(),
inOrderList.stream().mapToInt(Integer::intValue).toArray(),
postOrderList.stream().mapToInt(Integer::intValue).toArray()
};
}
// 先序遍历
private void preOrder(TreeNode root) {
if (root != null) {
preOrderList.add(root.val);
preOrder(root.left);
preOrder(root.right);
}
}
// 中序遍历
private void inOrder(TreeNode root) {
if (root != null) {
inOrder(root.left);
inOrderList.add(root.val);
inOrder(root.right);
}
}
// 后续遍历
private void postOrder(TreeNode root) {
if (root != null) {
postOrder(root.left);
postOrder(root.right);
postOrderList.add(root.val);
}
}
} 
京公网安备 11010502036488号