107、二叉搜尋樹中的眾數
阿新 • • 發佈:2018-12-23
題目描述
我的程式碼
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); } }