题意:
寻找一棵BST中的第k小的数。
思路:
递归比较方便。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int countNode(TreeNode* root)//计算子树有多少个节点,其实还可以将这个函数直接融到下面的函数中,用K来标记功能即可。
{
if(root==NULL) return ;
int L=countNode(root->left);
int R=countNode(root->right);
return L+R+;
}
int kthSmallest(TreeNode* root, int k)
{
int cnt=countNode(root->left);
if(cnt+==k) return root->val;
if(cnt>=k) kthSmallest(root->left,k);
else kthSmallest(root->right,k-cnt-);
}
};
AC代码