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(); } };