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
如果您觉得这篇文章对您有帮助,可以点个赞支持一下,感谢~

京公网安备 11010502036488号