501. 二叉搜索树中的众数 递归法,拓展:普通二叉树求众数
创始人
2024-03-19 03:40:32
0

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

  • 结点左子树中所含节点的值 小于等于 当前节点的值
  • 结点右子树中所含节点的值 大于等于 当前节点的值
  • 左子树和右子树都是二叉搜索树

示例 1:

输入:root = [1,null,2,2]
输出:[2]

示例 2:

输入:root = [0]
输出:[0]

提示:

  • 树中节点的数目在范围 [1, 104]
  • -105 <= Node.val <= 105

进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)

 法一:若为普通二叉树,并不是二叉搜索树的做法:采用unordered_map

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
private:bool static cmp(const pair& a,const pair& b){return a.second>b.second;}void inorder(TreeNode* root,unordered_map& res){if(root){inorder(root->left,res);res[root->val]++;inorder(root->right,res);}}
public:vector findMode(TreeNode* root) {vector ans;if(!root) return ans;unordered_map res;inorder(root,res);vector> vec(res.begin(),res.end());sort(vec.begin(),vec.end(),cmp);ans.push_back(vec[0].first);for(int i=1;i

法二:利用二叉搜索树的特性,采用递归法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
private:TreeNode* pre;int maxCount=INT_MIN;int count=0;void recursion(TreeNode* root,vector& res){if(root){recursion(root->left,res);if(pre==NULL){count=1;}else if(pre->val==root->val){count++;}else{count=1;}if(maxCount==count){res.push_back(root->val);}else if(maxCountval);maxCount=count;}pre=root;recursion(root->right,res);}}
public:vector findMode(TreeNode* root) {vector ans;recursion(root,ans);return ans;}
};

 参考代码:

代码随想录

相关内容

热门资讯

苹果关停大连首家直营店?官方回... 来源:中国企业家杂志整理|吴莹 王馨悦(实习)今日要闻中国长安汽车集团有限公司成立;多家公司驰援华北...
抗战影像记忆|“失联”88年的... (来源:千龙网)“伟大的卢沟桥也许将成为伟大的民族解放战争的发祥地了!”1937年8月1日,《世界知...
谁会是美联储新掌门 鲍威尔继任者也许能从前任那里获得不少经验教训,最为重要的是,能否将美联储的货币政策独立性原则贯彻下去...
瑞松科技:股东拟合计减持公司不... 人民财讯7月29日电,瑞松科技(688090)7月29日晚间公告,公司持股2.0013%的股东柯希平...
中银国际证券第一大股东回应股票... 中银国际证券股份有限公司近日收到其第一大股东中银国际控股有限公司就股票交易异常波动问询函的回函。中银...
选矿中最重要的二十种药剂是什么... 知识贴:选矿药剂选矿包括洗矿、破碎和选矿三道工序。在将有价金属从低含量、多金属共生的矿石中富集起来,...
30个创新项目精彩角逐,202... 转自:四川在线四川在线记者 肖莹佩7月29日,2025金熊猫全球创新创业大赛东亚区域赛在韩国首尔伙伴...
公路安全设施和交通秩序管理精细... 为深入推进公路安全设施和交通秩序管理精细化提升行动,交通运输部、公安部组织各地开展了精细化提升精品工...
上半年国有企业营业总收入达40... (来源:千龙网)财政部7月29日发布数据显示,上半年,全国国有及国有控股企业营业总收入407495....
安通控股股东中外运集增持508... 7月29日,安通控股(600179)发布公告,公司股东中外运集装箱运输有限公司于近日通过证券市场集中...