最朴素的想法,中序遍历就是二叉搜索树的递增序列,那直接写出整棵树的中序遍历即可。
class Solution
{
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if (!pRoot || k < 0)
return nullptr;
vector<TreeNode*> in_order;
InOrder(pRoot, inorder);
if (k > in_order.size())
return nullptr;
return in_order[k - 1];
}
void InOrder(TreeNode* pRoot, vector<TreeNode*>& in_order)
{
if (pRoot == nullptr)
{
return;
}
InOrder(pRoot->left, in_order);
in_order.push_back(pRoot);
InOrder(pRoot->right, in_order);
}
};