Leetcode508. 出現次數最多的子樹元素和
連結:https://leetcode-cn.com/problems/most-frequent-subtree-sum
給你一個二叉樹的根結點,請你找出出現次數最多的子樹元素和。一個結點的「子樹元素和」定義為以該結點為根的二叉樹上所有結點的元素之和(包括結點本身)。
你需要返回出現次數最多的子樹元素和。如果有多個元素出現的次數相同,返回所有出現次數最多的子樹元素和(不限順序)。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
//按照第二個值進行排序
static bool cmp(pair<int,int> &a,pair<int,int> &b){
return a.second > b.second;
}
//後序遍歷模板,並且記錄值出現的次數
int dfs(TreeNode *root,unordered_map<int,int> &m){
int sum;
if(!root) return 0;
int l = dfs(root->left,m);
int r = dfs(root->right,m);
sum=root->val+r+l;
m[sum]++;
return sum;
}
vector<int> findFrequentTreeSum(TreeNode* root) {
unordered_map<int,int> m;
dfs(root,m);
//map不能使用sort演算法,只能將其用vector儲存後,再使用sort進行排序
vector<pair<int,int> > v;
for(auto it:m){
v.push_back(it);
}
//按照出現的頻率進行排序
sort(v.begin(),v.end(),cmp);
vector<int> res;
if(v.empty()) return res;
res.push_back(v[0].first);
for(int i=1;i<v.size();i++){
if(v[i].second!=v[0].second)
break;
res.push_back(v[i].first);
}
return res;
}
};
相關文章
- js找出陣列中出現最多的元素和次數JS陣列
- 508、出現次數最多的子樹元素和 | 演算法(leetcode,附思維導圖 + 全部解法)300題演算法LeetCode
- 輸出字串中出現次數最多的字元和次數字串字元
- 統計陣列元素中每個元素出現的次數陣列
- matlab——統計相同元素出現的次數Matlab
- Python實用技法第11篇:找出序列中出現次數最多的元素Python
- asp.net 實現獲取一個集合陣列中出現次數最多的元素ASP.NET陣列
- Python統計列表元素出現次數Python
- 統計陣列中各數字(元素)出現的次數陣列
- 統計陣列中各元素出現次數陣列
- [PY3]——找出一個序列中出現次數最多的元素/collections.Counter 類的用法
- 陣列中每個陣列元素出現的次數陣列
- javascript獲取字串中出現次數最多的字元JavaScript字串字元
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 如何統計一列數中每個元素出現的次數
- matlab如何統計矩陣各元素的出現次數Matlab矩陣
- matlab之對元素出現的次數進行統計Matlab
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 使用次數最多的Java API排行JavaAPI
- 【轉】matlab之對元素出現的次數進行統計Matlab
- 求Matlab矩陣中各個不同元素或者某個元素出現的次數Matlab矩陣
- 判斷字串中出現最多的字元,並統計次數字串字元
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- js獲取陣列中元素出現的次數程式碼例項JS陣列
- 獲取字串中重複次數最多的字元字串字元
- JavaScript統計字元出現的次數JavaScript字元
- 統計字串出現的次數(C)字串
- Dictionary計算字元出現的次數字元
- 獲取執行次數最多和單次執行時間最長的10個SQLSQL
- 計算陣列元素重複的個數,並把出現次數相同的統計一起。陣列
- [Shell] 統計字串出現的次數和排序(cut,sort,uniq)字串排序
- CF365D-區間內出現偶數次的數的異或和
- 二叉樹的子樹和子結構 c++二叉樹C++
- 統計陣列個元素出現的個數陣列
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- 定義方法統計集合中指定元素出現的次數,如“a“ 3,“b“ 2,“c“ 1
- C#練習,編寫一個擲篩子100次的程式,並列印出各種點數的出現次數。C#
- javascript獲取指定元素第一次出現的位置JavaScript