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 static List<Integer> list = new ArrayList<>(); public int[] inorderTraversal (TreeNode root) { count(root); list.sort(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1 - o2; } }); int [] result = new int[list.size()]; for (int i = 0; i < list.size(); i++) { result[i] = list.get(i); } return result; } public void count(TreeNode node) { if (node == null) { return; } list.add(node.val); if (node.left == null && node.right == null) { return; } count(node.left); count(node.right); } }
本题知识点分析:
二叉树的遍历和集合添加以及排序,本题是基础题,主要知识点是掌握二叉树遍历,随你玩前序,中序,后序,或者层序,只要取出所有有值的节点添加到集合。
本题解题思路:
1.先创建一个全局变量的集合用于存放节点值
2.编写递归count函数,利用中序遍历,获取所有结点的值
3.通过sort函数的传入匿名内部类new Comparator,别和Comparable接口的comparaTo方法搞错了
4.题目要求返回的int[],从集合中取出放入到一维整型数组就可以了
本题使用编程语言:Java
如果您觉得这篇文章对您有帮助,可以点个赞支持一下,感谢~