剣指offer――二叉は木の第kの結点を捜索します.


概要
タイトルは与えられた一本の二叉検索ツリーを記述します.その中の第kの小さい結点を探してください.例えば、(5、3、7、2、4、6、8)では、3番目の小さい結点の値は、結点の数値順に4となります.
C++ACコード
#include 
using namespace std;


struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};

class Solution {
    private:
        int cnt;
        TreeNode* ans;
    public:
        void Inorder(TreeNode* root){
            if(cnt == 0){
                return;
            }
            if(!root){
                return;
            }
            this->Inorder(root->left);
            cnt--;
            if(cnt != 0){
                ans = root;
            }
            this->Inorder(root->right);
        }

        TreeNode* KthNode(TreeNode* pRoot, int k){
            if(!pRoot || k < 1){
                return NULL;
            }
            cnt = k;
            ans = NULL;
            this->Inorder(pRoot);
            return ans;
        }
};