携程网站建设进度及实施过程,搜索引擎seo如何赚钱,中小企业网站建设方案,制冷机电工程东莞网站建设给定一个有相同值的二叉搜索树#xff08;BST#xff09;#xff0c;找出 BST 中的所有众数#xff08;出现频率最高的元素#xff09;。
假定 BST 有如下定义#xff1a;
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值…给定一个有相同值的二叉搜索树BST找出 BST 中的所有众数出现频率最高的元素。
假定 BST 有如下定义
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树例如 给定 BST [1,null,2,2], 1\2/2
返回[2].
提示如果众数超过1个不需考虑输出顺序
代码如下
/*** 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 {
public:int base 0;int cnt 0;int maxcnt 0;vectorintans;vectorint findMode(TreeNode* root) {dfs(root);return ans;}void compare_node(int x){if (xbase){cnt;}else{base x;cnt 1;}if (cnt maxcnt) ans.push_back(base);if (cnt maxcnt){maxcnt cnt;ans vectorint{base};}}void dfs(TreeNode *root){if (rootnullptr) return ;dfs(root-left);compare_node(root-val);dfs(root-right);}};