Leetcode-230-二叉排序树中第K小的元素
题目链接
题目描述
给定一个二叉搜索树的根节点 root ,和一个整数 k ,
查找其中第 k 个最小元素(从 1 开始计数)。
思路
二叉排序树的 中序遍历 是升序。
直接中序遍历呗,用个变量 记录 访问数据的个数,
好久不写递归遍历,不会写了....
C++代码
class Solution {
public:
int i = 0;
int kthSmallest(TreeNode* root, int k)
{
if (root == nullptr) return -1;
int left = kthSmallest(root->left, k);
if (left != -1) return left;
i++;
if (i == k) return root->val;
int right = kthSmallest(root->right, k);
if (right != -1) return right;
return -1;
}
};