class Solution {
public:
    // 中序遍历
    void  midTraverse(TreeNode* root, queue<TreeNode*> &q)
    {
        if(root == NULL) return;
        midTraverse(root->left, q);
        q.push(root);
        midTraverse(root->right, q);
    }

    TreeNode* KthNode(TreeNode* pRoot, int k)
    {    
        if(k<1)  return NULL;
        if(pRoot == NULL)  return NULL;
        queue<TreeNode*> q;
        // 首先中序遍历,可以将二叉树中数据升序
        midTraverse(pRoot, q);
        int num = q.size();
        // 树中结点的总数比 k 小才行
        if(num < k)   return NULL;
        for(int i=0; i<k-1; i++)
        {
            q.pop();
        }
        return q.front();
    }
};