LeetCode
来源:互联网 发布:哥特鸟嘴面具 知乎 编辑:程序博客网 时间:2024/06/05 18:21
Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred element) in the given BST.
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than or equal to the node's key.
- The right subtree of a node contains only nodes with keys greater than or equal to the node's key.
- Both the left and right subtrees must also be binary search trees.
For example:
Given BST [1,null,2,2]
,
1 \ 2 / 2
return [2]
.
Note: If a tree has more than one mode, you can return them in any order.
Follow up: Could you do that without using any extra space? (Assume that the implicit stack space incurred due to recursion does not count).
问在一棵BST中,出现最多的数是哪个(哪些)
对BST进行中根遍历的话,结果就刚好是一个排序数组。我们记录他的上一个数字prenum,最大的次数cntmax,和当前已经出现过的次数cntnow。如果cntnow > cntmax,那么久清空数组并更新,如果相等,直接丢进数组就好了。时间复杂度O(n),空间复杂度我觉得最坏情况下有O(n),不懂那些说O(1)的是怎么想的。
/** * 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: vector<int> findMode(TreeNode* root) { solve(root); return ans; }private: vector<int> ans; int cntnow = 0, cntmax = 0, prenum = 0; void solve(TreeNode* root) { if (!root) return; solve(root->left); cntnow++; if (prenum != root->val) { prenum = root->val; cntnow = 1; } if (cntnow > cntmax) { cntmax = cntnow; ans.clear(); ans.push_back(root->val); } else if (cntnow == cntmax) { ans.push_back(root->val); } solve(root->right); }};
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- 【判断一个节点是否在一棵二叉树中】/【判断一颗二叉树是是否是另一颗树的子树】
- Linux下安装Oracle客户端
- 后台将多个java对象转化成json数组传到前端
- Java多线程例子
- ansible04 脚本管理主机
- LeetCode
- 工业控制网络漏洞安全防护措施
- 欢迎使用CSDN-markdown编辑器
- C#中Console的结果保存
- java中使用SAX读取和写出XML文件
- 实例说明optimize table在优化mysql时很重要
- 微信公众平台java开发详解(工程代码+解析)(详解)
- CAN终端电阻
- JAVA-27-jsp入门介绍