题目:
题解:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int search_num(struct TreeNode* root, int k, int *result, int num)
{
if(num == k + 1)
{
return k + 1; // 已找到就不往下跑了
}
if(root->left)
{
num = search_num(root->left, k, result, num);
}
if(num == k)
{
*result = root->val;
return k + 1; // 已找到就不往下跑了
}
num++;
if(root->right)
{
num = search_num(root->right, k, result, num);
}
return num;
}
int kthSmallest(struct TreeNode* root, int k) {
int result = 0;
search_num(root, k, &result, 1); // 开始寻找
return result;
}