每日一題演算法:2020年9月24日 [二叉搜尋樹中的眾數] findMode
2020年9月24日 二叉搜尋樹中的眾數 findMode
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int[] findMode(TreeNode root) {
}
}
解題思路:
題目中都提示我們使用遞迴來解決這個問題了,那肯定是選擇遞迴了。
首先我們使用會用到額外空間的方式,計數法去實現,寫一個額外的函式去遞迴二叉樹,將所有數字出現的次數進行統計,然後輸出出現次數最多的那些眾數。
程式碼實現:使用最愚蠢也最簡單的方式去實現。
HashMap<Integer,Integer> map=new HashMap<>();
public int[] findMode(TreeNode root) {
findmore(root);
int maxNum=0;
List<Integer> list = new ArrayList<>();
for (Integer integer : map.keySet()) {
if (map.get(integer) > maxNum){
maxNum = map.get(integer);
list = new ArrayList<>();
list.add(integer);
}else if (map.get(integer) == maxNum){
list.add(integer);
}
}
int[] res=new int[list.size()];
for (int i=0;i<list.size();i++) {
res[i]=list.get(i);
}
return res;
}
public void findmore(TreeNode root){
if (root==null)
return;
if (map.get(root.val)==null){
map.put(root.val,1 );
}
else
map.put(root.val,map.get(root.val)+1 );
findmore(root.right);
findmore(root.left);
}
相關文章
- Leedcode-二叉搜尋樹中的眾數
- Leetcode刷題筆記 501. 二叉搜尋樹中的眾數LeetCode筆記
- 程式碼隨想錄day18 || 530 二叉搜尋樹最小差,501 二叉搜尋樹眾數,236 二叉搜尋樹最近公共祖先
- Day21 | 530.二叉搜尋樹的最小絕對差、501.二叉搜尋樹中的眾數 、236. 二叉樹的最近公共祖先二叉樹
- 演算法篇 - 二叉搜尋樹演算法
- 每日一練(26):二叉搜尋樹的第k大節點
- 程式碼隨想錄演算法訓練營第18天| 530.二叉搜尋樹的最小絕對差, 501.二叉搜尋樹中的眾數 , 236. 二叉樹的最近公共祖先演算法二叉樹
- 程式碼隨想錄演算法訓練營day18 |530.二叉搜尋樹的最小絕對差 501.二叉搜尋樹中的眾數 236. 二叉樹的最近公共祖先演算法二叉樹
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- 二叉搜尋樹
- Day20 | 654.最大二叉樹 、 617.合併二叉樹 、 700.二叉搜尋樹中的搜尋 98.驗證二叉搜尋樹二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 【亡羊補牢】挑戰資料結構與演算法 第39期 LeetCode 501. 二叉搜尋樹中的眾數(二叉樹)資料結構演算法LeetCode二叉樹
- leetcode 700. 二叉搜尋樹中的搜尋 思考分析LeetCode
- 程式碼隨想錄演算法訓練營第22天 |二叉樹part07:235. 二叉搜尋樹的最近公共祖先、701.二叉搜尋樹中的插入操作、450.刪除二叉搜尋樹中的節點演算法二叉樹
- 701. 二叉搜尋樹中的插入操作
- 程式碼隨想錄演算法訓練營第第20天 | 654.最大二叉樹 、617.合併二叉樹 、700.二叉搜尋樹中的搜尋、98.驗證二叉搜尋樹演算法二叉樹
- 二叉搜尋樹的結構
- 二叉搜尋樹的操作集
- (40/60)整數拆分、不同的二叉搜尋樹
- 程式碼隨想錄演算法訓練營第19天|235. 二叉搜尋樹的最近公共祖先 ,701.二叉搜尋樹中的插入操作,450.刪除二叉搜尋樹中的節點演算法
- 程式碼隨想錄演算法訓練營day19| 235. 二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- 程式碼隨想錄演算法訓練營day22 | leetcode 235. 二叉搜尋樹的最近公共祖先、701. 二叉搜尋樹中的插入操作、450. 刪除二叉搜尋樹中的節點演算法LeetCode
- 程式碼隨想錄演算法訓練營第十七天| 654.最大二叉樹 , 617.合併二叉樹 , 700.二叉搜尋樹中的搜尋 , 98.驗證二叉搜尋樹演算法二叉樹
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 一文搞定二叉排序(搜尋)樹排序
- 從二分搜尋到二叉搜尋樹
- [每日一題] 第八題:二叉樹的深度每日一題二叉樹
- [每日一題] 第三題:二叉樹的深度每日一題二叉樹
- 程式碼隨想錄演算法訓練營第十七天|leetcode654. 最大二叉樹、leetcode617.合併二叉樹、leetcode700.二叉搜尋樹中的搜尋、leetcode98.驗證二叉搜尋樹演算法LeetCode二叉樹
- 96. 不同的二叉搜尋樹
- 二叉搜尋樹的python實現Python
- 如何在 Java 中實現二叉搜尋樹Java
- 演算法與資料結構——AVL樹(平衡二叉搜尋樹)演算法資料結構
- 程式碼隨想錄演算法訓練營第二十二天 | 235.二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- 22天【程式碼隨想錄演算法訓練營34期】第六章 二叉樹part08 (● 235. 二叉搜尋樹的最近公共祖先 ● 701.二叉搜尋樹中的插入操作 ● 450.刪除二叉搜尋樹中的節點)演算法二叉樹
- 230. 二叉搜尋樹中第 K 小的元素