题目描述
我的代码
class Solution {
public int[] findMode(TreeNode root) {
HashMap<Integer, Integer> tem = new HashMap<>();
findMode(root,tem);
int max = 0;
for (int iterable_element : tem.values()) {
if(max < iterable_element){
max = iterable_element;
}
}
int i = 0;
for (int key : tem.keySet()) {
if(max == tem.get(key)){
i++;
}
}
int resut[] = new int[i];
int k = 0;
for (int key : tem.keySet()) {
if(max == tem.get(key)){
resut[k++] = key;
}
}
return resut;
}
public static void findMode(TreeNode root,HashMap<Integer, Integer>s) {
if(root == null){
return ;
}else {
s.put(root.val, s.getOrDefault(root.val, 0)+1);
findMode(root.right,s);
findMode(root.left,s);
}
}
}
排行靠前的代码
class Solution {
private int lastNum=Integer.MIN_VALUE;
private int cur=lastNum;
private int count=0;
private int maxCount=Integer.MIN_VALUE;
private List<Integer> res;
public int[] findMode(TreeNode root) {
res=new ArrayList<>();
traversal(root);
int[] arr=new int[res.size()];
int i=0;
for(Integer num:res)
arr[i++]=num;
return arr;
}
public void traversal(TreeNode root) {
if(root==null)
return ;
traversal(root.left);
cur=root.val;
count=cur==lastNum?count+1:0;
if(maxCount==count)
res.add(cur);
else if(maxCount<count) {
res.clear();
maxCount=count;
res.add(cur);
}
lastNum=cur;
traversal(root.right);
}
}