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();
}
};
京公网安备 11010502036488号