题目:
给定一棵二叉搜索树,请找出其中第k大的节点。
示例 1:
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4
示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4
限制:
1 ≤ k ≤ 二叉搜索树元素个数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
class Solution {
//计数器
int count = 0;
//答案
int res;
public:
int kthLargest(TreeNode* root, int k) {
//数为空
if(root==NULL) return 0;
kthLargest(root->right,k);
//中序遍历时计数
count++;
//符合条件记录题解
if(count==k){
res = root->val;
}
kthLargest(root->left,k);
return res;
}
};
思路:
看代码其实很容易理解,我们中序遍历二叉搜索树的时候就是顺序排列。值得注意的是这里要的是第k大所有我们先遍历右子树,在遍历左子树就可以了!
不懂可以评论区问我ou!
9050



被折叠的 条评论
为什么被折叠?



