- 链接:
- 描述,示例和链接:
- 代码:
- 代码分析:
链接: 出现次数最多的子树元素和
描述,示例和链接:
class Solution {
int maxret = 0;
unordered_map mp;
int dfs(TreeNode* root)
{
if(root==nullptr) return 0;
int now = root->val+dfs(root->left)+dfs(root->right);
maxret = max(maxret,++mp[now]);
return now;
}
public:
vector findFrequentTreeSum(TreeNode* root) {
dfs(root);
vector ret;
for(auto &[a,b] : mp)
{
if(b == maxret)
ret.emplace_back(a);
}
return ret;
}
};
代码分析:
1.二叉树的题一般都是 遍历题,要根据题目所求然后寻找最合适的遍历方式
2.每个节点的值是:左子树的值+右子树的值+本身
即:
叶子节点时:0+0+root->val
叶子节点上一层:左节点+右节点+root->val
再上一层:左子树的值+右子树的值+本身
左,右,本身-----后序遍历



