南京网站建设公司哪家好,怎么推广网页,网易163企业邮箱注册,企业网络推广分析论文二叉搜索树中的众数
链接 给你一个含重复值的二叉搜索树#xff08;BST#xff09;的根节点 root #xff0c;找出并返回 BST 中的所有 众数#xff08;即#xff0c;出现频率最高的元素#xff09;。
如果树中有不止一个众数#xff0c;可以按 任意顺序 返回。
假定…二叉搜索树中的众数
链接 给你一个含重复值的二叉搜索树BST的根节点 root 找出并返回 BST 中的所有 众数即出现频率最高的元素。
如果树中有不止一个众数可以按 任意顺序 返回。
假定 BST 满足如下定义
结点左子树中所含节点的值 小于等于 当前节点的值 结点右子树中所含节点的值 大于等于 当前节点的值 左子树和右子树都是二叉搜索树
示例 1
输入root [1,null,2,2] 输出[2] 示例 2
输入root [0] 输出[0]
提示
树中节点的数目在范围 [1, 104] 内 -105 Node.val 105
递归法
返回值 void参数 treenode*
void seach(TreeNode* cur)终止
if(curNULL) return;单次递归 全局变量 int maxCount0;//最大值频率int curCount0;//当前频率vectorint max;TreeNode* preNULL;void seach(TreeNode* cur){if(curNULL) return;seach(cur-left);//左if(preNULL){ //第一个初始化curCount1;}else if(pre-valcur-val){curCount;}else curCount1;if(curCountmaxCount){max.push_back(cur-val);}if(curCountmaxCount){maxCountcurCount;max.clear(); //有新的最大频率之前的要清除max.push_back(cur-val);}precur; seach(cur-right);代码
class Solution {
public:int maxCount0;int curCount0;vectorint max;TreeNode* preNULL;void seach(TreeNode* cur){if(curNULL) return;seach(cur-left);if(preNULL){curCount1;}else if(pre-valcur-val){curCount;}else curCount1;if(curCountmaxCount){max.push_back(cur-val);}if(curCountmaxCount){maxCountcurCount;max.clear();max.push_back(cur-val);}precur;seach(cur-right);}vectorint findMode(TreeNode* root) {seach(root);return max;}
};