❗️LeetCode_230_二叉搜索树中第K小的元素
题目描述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 给定一棵二叉搜索树,请找出其中第k大的节点。
示例:
输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 4
输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4
限制:1 ≤ k ≤ 二叉搜索树元素个数
|
解法1:中序遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class Solution { public:
int a;
int kthLargest(TreeNode* root, int k) {
dfs(root, k); return a; }
void dfs(TreeNode* root, int& k) {
if(root == NULL) return;
dfs(root->right, k);
k--;
if(k == 0) a = root->val; if(k > 0) dfs(root->left, k); } };
|