分析:
一种很简单的思路,我们知道,二叉搜索树的中序遍历的结果,即是从小到大的排序。我们可以先用一个vector存下该二叉搜索树中序遍历的结果。再在该vector中找到第k-1个元素即可。(因为vector下标从0开始)。
代码如下:
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(!pRoot ||k <= 0) return NULL;
vector<TreeNode*> in_vec;
In(pRoot,in_vec);
if(k>in_vec.size()) //注意这里的判断条件
return NULL;
return in_vec[k-1];
}
void In(TreeNode *pRoot, vector<TreeNode*> &in_vec) //注意这里要传引用进去
{
if(!pRoot) return;
In(pRoot->left,in_vec);
in_vec.push_back(pRoot);
In(pRoot->right,in_vec);
}
};