Find kth number in a BST
struct Node
{
Node *left;
Node *right;
int val;
Node(int v) : val(v), left(NULL), right(NULL){}
};
void visit(Node *node, int &k, Node **p)
{
if (node == NULL)
{
return;
}
visit(node->left, k, p);
if (k == 0)
{
return;
}
k--;
if (k == 0)
{
*p = node;
return;
}
visit(node->right, k, p);
}
Node* findKthElement(Node *node, int k)
{
Node *p = NULL;
visit(node, k, &p);
return p;
}