分别按照二叉树先序,中序和后序打印所有的节点。
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/questionTerminal/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整型二维数组
*/
static List<Integer> pre = new LinkedList<>();
static List<Integer> mid = new LinkedList<>();
static List<Integer> after = new LinkedList<>();
public int[][] threeOrders (TreeNode root) {
// write code here
PreTreeNode(root);
MidTreeNode(root);
AfterTreeNode(root);
int[][] res = {
pre.stream().mapToInt(Integer::valueOf).toArray(),
mid.stream().mapToInt(Integer::valueOf).toArray(),
after.stream().mapToInt(Integer::valueOf).toArray()
};
// 这里不执行清空,输出结果有问题
pre.clear();
mid.clear();
after.clear();
return res;
}
private static void PreTreeNode(TreeNode root) {
if (root == null) {
return;
}
pre.add(root.val);
PreTreeNode(root.left);
PreTreeNode(root.right);
}
private static void MidTreeNode(TreeNode root) {
if (root == null) {
return;
}
MidTreeNode(root.left);
mid.add(root.val);
MidTreeNode(root.right);
}
private static void AfterTreeNode(TreeNode root) {
if (root == null) {
return;
}
AfterTreeNode(root.left);
AfterTreeNode(root.right);
after.add(root.val);
}
}
影石Insta360公司氛围 452人发布