import java.util.*; public class Solution { public int[][] threeOrders (TreeNode root) { // 三个集合,分别存储三种遍历结果 List<Integer> list1 = new ArrayList<>(); // 先序结果 List<Integer> list2 = new ArrayList<>(); // 中序结果 List<Integer> list3 = new ArrayList<>(); // 后序结果 // 分别调用对应的函数 preOrder(root,list1); inOrder(root,list2); postOrder(root,list3); // 构建结果集并返回 int[][] ans = new int[3][list1.size()]; for (int i = 0; i < list1.size(); i++) { ans[0][i] = list1.get(i); ans[1][i] = list2.get(i); ans[2][i] = list3.get(i); } return ans; } // 先序遍历函数 public static void preOrder(TreeNode root, List<Integer> list1) { // 预处理 if (root == null) return; // 对左右子树进行递归遍历 list1.add(root.val); // 根 preOrder(root.left, list1); // 左 preOrder(root.right, list1); // 右 } // 中序遍历函数 public static void inOrder(TreeNode root, List<Integer> list2) { // 预处理 if (root == null) return; // 对左右子树进行递归遍历 inOrder(root.left, list2); // 左 list2.add(root.val); // 根 inOrder(root.right, list2); // 右 } // 后序遍历函数 public static void postOrder(TreeNode root, List<Integer> list3) { // 预处理 if (root == null) return; // 对左右子树进行递归遍历 postOrder(root.left, list3); // 左 postOrder(root.right, list3); // 右 list3.add(root.val); // 根 } }