/*
* File: KthsmallestBST.c
* Author: srkrishnan
*
* Created on June 29, 2011, 10:57 PM
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Tnode {
int data;
struct Tnode *left;
struct Tnode *right;
} Tnode;
Tnode* createnode(int data)
{
Tnode
*n
= (Tnode
*) malloc(sizeof (Tnode
)); n->data = data;
n->left = NULL;
n->right = NULL;
}
void inorder(Tnode *root)
{
if(root==NULL)
return;
inorder(root->left);
inorder(root->right);
}
int kthsmallest(Tnode *root,int k)
{
static int bk=0,found=0,data=0;
if(root==NULL)
return 0;
if(found==0)
kthsmallest(root->left,k);
bk++;
if(bk==k)
{
found=1;
data=root->data;
}
if(found==0)
kthsmallest(root->right,k);
return data;
}
int main() {
Tnode *root;
root=createnode(15);
root->left=createnode(7);
root->right=createnode(25);
root->left->left=createnode(3);
root->left->right=createnode(10);
root->right->left=NULL;
root->right->right=createnode(50);
root->left->right->left=createnode(8);
root->left->right->right=createnode(12);
root->left->right->left->left=NULL;
root->left->right->left->right=createnode(9);
root->left->right->right->left=createnode(11);
root->left->right->right->right=createnode(14);
root->right->right->left=createnode(30);
root->right->right->right=createnode(55);
root->right->right->right->left=createnode(52);
root->right->right->right->right=NULL;
//inorder(root);
printf("%d",kthsmallest
(root
,5));
return 0;
}
LyogCiAqIEZpbGU6ICAgS3Roc21hbGxlc3RCU1QuYwogKiBBdXRob3I6IHNya3Jpc2huYW4KICoKICogQ3JlYXRlZCBvbiBKdW5lIDI5LCAyMDExLCAxMDo1NyBQTQogKi8KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+Cgp0eXBlZGVmIHN0cnVjdCBUbm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBUbm9kZSAqbGVmdDsKICAgIHN0cnVjdCBUbm9kZSAqcmlnaHQ7Cn0gVG5vZGU7CgpUbm9kZSogY3JlYXRlbm9kZShpbnQgZGF0YSkKewogICAgVG5vZGUgKm4gPSAoVG5vZGUqKSBtYWxsb2Moc2l6ZW9mIChUbm9kZSkpOwogICAgbi0+ZGF0YSA9IGRhdGE7CiAgICBuLT5sZWZ0ID0gTlVMTDsKICAgIG4tPnJpZ2h0ID0gTlVMTDsKfQoKdm9pZCBpbm9yZGVyKFRub2RlICpyb290KQp7CiAgICBpZihyb290PT1OVUxMKQogICAgICAgIHJldHVybjsKICAgIGlub3JkZXIocm9vdC0+bGVmdCk7CiAgICBwcmludGYoIiAlZCAiLHJvb3QtPmRhdGEpOwogICAgaW5vcmRlcihyb290LT5yaWdodCk7Cn0KCmludCBrdGhzbWFsbGVzdChUbm9kZSAqcm9vdCxpbnQgaykKewogICAgc3RhdGljIGludCBiaz0wLGZvdW5kPTAsZGF0YT0wOwogICAgaWYocm9vdD09TlVMTCkKICAgICAgICByZXR1cm4gMDsKICAgIGlmKGZvdW5kPT0wKQogICAgICAgIGt0aHNtYWxsZXN0KHJvb3QtPmxlZnQsayk7CiAgICBiaysrOwogICAgaWYoYms9PWspCiAgICB7CiAgICAgICAgZm91bmQ9MTsKICAgICAgICBkYXRhPXJvb3QtPmRhdGE7CiAgICB9CiAgICBpZihmb3VuZD09MCkKICAgICAgICBrdGhzbWFsbGVzdChyb290LT5yaWdodCxrKTsKICAgIHJldHVybiBkYXRhOwp9CgppbnQgbWFpbigpIHsKICAgIFRub2RlICpyb290OwogICAgCiAgICByb290PWNyZWF0ZW5vZGUoMTUpOwogICAgCiAgICByb290LT5sZWZ0PWNyZWF0ZW5vZGUoNyk7CiAgICByb290LT5yaWdodD1jcmVhdGVub2RlKDI1KTsKICAgIAogICAgcm9vdC0+bGVmdC0+bGVmdD1jcmVhdGVub2RlKDMpOwogICAgcm9vdC0+bGVmdC0+cmlnaHQ9Y3JlYXRlbm9kZSgxMCk7CiAgICAKICAgIHJvb3QtPnJpZ2h0LT5sZWZ0PU5VTEw7CiAgICByb290LT5yaWdodC0+cmlnaHQ9Y3JlYXRlbm9kZSg1MCk7CiAgICAKICAgIHJvb3QtPmxlZnQtPnJpZ2h0LT5sZWZ0PWNyZWF0ZW5vZGUoOCk7CiAgICByb290LT5sZWZ0LT5yaWdodC0+cmlnaHQ9Y3JlYXRlbm9kZSgxMik7CiAgICAKICAgIHJvb3QtPmxlZnQtPnJpZ2h0LT5sZWZ0LT5sZWZ0PU5VTEw7CiAgICByb290LT5sZWZ0LT5yaWdodC0+bGVmdC0+cmlnaHQ9Y3JlYXRlbm9kZSg5KTsKICAgICAgICAgICAgCiAgICByb290LT5sZWZ0LT5yaWdodC0+cmlnaHQtPmxlZnQ9Y3JlYXRlbm9kZSgxMSk7CiAgICByb290LT5sZWZ0LT5yaWdodC0+cmlnaHQtPnJpZ2h0PWNyZWF0ZW5vZGUoMTQpOwogICAgCiAgICByb290LT5yaWdodC0+cmlnaHQtPmxlZnQ9Y3JlYXRlbm9kZSgzMCk7CiAgICByb290LT5yaWdodC0+cmlnaHQtPnJpZ2h0PWNyZWF0ZW5vZGUoNTUpOwogICAgCiAgICByb290LT5yaWdodC0+cmlnaHQtPnJpZ2h0LT5sZWZ0PWNyZWF0ZW5vZGUoNTIpOwogICAgcm9vdC0+cmlnaHQtPnJpZ2h0LT5yaWdodC0+cmlnaHQ9TlVMTDsKICAgIAogICAgLy9pbm9yZGVyKHJvb3QpOwogICAgCiAgICBwcmludGYoIiVkIixrdGhzbWFsbGVzdChyb290LDUpKTsKICAgIAogICAgcmV0dXJuIDA7Cn0KCgo=