中序遍历即 左根右,在左右子树遍历之间,将当前节点的值放入集合中。
由于结果的大小未知,所以,使用集合去存储元素,最后再将集合转化为数组。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型一维数组 */ public int[] inorderTraversal (TreeNode root) { // write code here if (root == null) { return new int[0]; } ArrayList<Integer> res = new ArrayList<>(); inOrder(root, res); int[] ans = new int[res.size()]; for (int i = 0; i < res.size(); ++i) { ans[i] = res.get(i); } return ans; } private void inOrder(TreeNode root, ArrayList<Integer> res) { if (root == null) { return; } inOrder(root.left, res); res.add(root.val); inOrder(root.right, res); } }