题目:二叉搜索树中第K小的元素
题目描述
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
解题思路
二叉搜索树的每一个节点的左子树节点比其小,右子树的节点比其大,可以通过中序遍历的方法来选择第k小的数
代码
class Solution {
public:
int kthSmallest(TreeNode* root, int k) {
stack<TreeNode*> sta;
while (root != nullptr || sta.size() > 0)
{
while (root != nullptr)
{
sta.push(root);
root = root->left;
}
root = sta.top();
sta.pop();
--k;
if (k == 0)
{
break;
}
root = root->right;
}
return root->val;
}
};