分别按照二叉树先序,中序和后序打印所有的节点。
实现二叉树先序,中序和后序遍历
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); } }