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;
}
};
相關文章
- 508、出現次數最多的子樹元素和 | 演算法(leetcode,附思維導圖 + 全部解法)300題演算法LeetCode
- js找出陣列中出現最多的元素和次數JS陣列
- 輸出字串中出現次數最多的字元和次數字串字元
- matlab——統計相同元素出現的次數Matlab
- Python實用技法第11篇:找出序列中出現次數最多的元素Python
- 統計陣列元素中每個元素出現的次數陣列
- 統計陣列中各數字(元素)出現的次數陣列
- matlab如何統計矩陣各元素的出現次數Matlab矩陣
- matlab之對元素出現的次數進行統計Matlab
- 陣列中每個陣列元素出現的次數陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 【轉】matlab之對元素出現的次數進行統計Matlab
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 微博十年使用次數最多的表情出爐
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- 判斷字串中出現最多的字元,並統計次數字串字元
- 父元素下有子元素,子元素也有高度但父元素的高度為何為0呢?分析下可能出現的原因及解決方法
- 計算陣列元素重複的個數,並把出現次數相同的統計一起。陣列
- 統計陣列個元素出現的個數陣列
- 獲取字串中重複次數最多的字元字串字元
- Dictionary計算字元出現的次數字元
- 獨一無二的出現次數
- 統計字串出現的次數(C)字串
- JavaScript統計字元出現的次數JavaScript字元
- 定義方法統計集合中指定元素出現的次數,如“a“ 3,“b“ 2,“c“ 1
- CF365D-區間內出現偶數次的數的異或和
- C#練習,編寫一個擲篩子100次的程式,並列印出各種點數的出現次數。C#
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- 只出現一次的數字 II
- 136只出現一次的數字
- LeetCode 只出現一次的數字LeetCode
- 【面試被虐】如何只用2GB記憶體從20億,40億,80億個整數中找到出現次數最多的數?面試記憶體
- 前端 JavaScript 獲取字串中重複次數最多的字元前端JavaScript字串字元
- 1207. 獨一無二的出現次數
- 136. 只出現一次的數字
- LC-出現一次的數字II
- 只出現一次的數字--力扣力扣
- LeetCode 只出現一次的數字IIILeetCode