剑指offer62_二叉搜索树的第k个结点_题解
二叉搜索树的第k个结点
题目描述
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。
分析
方案一:递归
示例1
输入
{5,3,7,2,4,6,8},3
返回值
{4}
代码
/*
1.时间复杂度:O(n)
2.空间复杂度:O(n)
*/
class Solution
{
public:
TreeNode *res = nullptr;
void dfs(TreeNode *root, int &k)
{
if (!root)
{
return;
}
dfs(root->left, k);
if (--k == 0)
{
res = root;
return;
}
dfs(root->right, k);
}
TreeNode *KthNode(TreeNode *root, int k)
{
if (!root || k == 0)
{
return nullptr;
}
dfs(root, k);
return res;
}
};