fork download
  1. /*
  2.  * File: KthsmallestBST.c
  3.  * Author: srkrishnan
  4.  *
  5.  * Created on June 29, 2011, 10:57 PM
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. typedef struct Tnode {
  12. int data;
  13. struct Tnode *left;
  14. struct Tnode *right;
  15. } Tnode;
  16.  
  17. Tnode* createnode(int data)
  18. {
  19. Tnode *n = (Tnode*) malloc(sizeof (Tnode));
  20. n->data = data;
  21. n->left = NULL;
  22. n->right = NULL;
  23. }
  24.  
  25. void inorder(Tnode *root)
  26. {
  27. if(root==NULL)
  28. return;
  29. inorder(root->left);
  30. printf(" %d ",root->data);
  31. inorder(root->right);
  32. }
  33.  
  34. int kthsmallest(Tnode *root,int k)
  35. {
  36. static int bk=0,found=0,data=0;
  37. if(root==NULL)
  38. return 0;
  39. if(found==0)
  40. kthsmallest(root->left,k);
  41. bk++;
  42. if(bk==k)
  43. {
  44. found=1;
  45. data=root->data;
  46. }
  47. if(found==0)
  48. kthsmallest(root->right,k);
  49. return data;
  50. }
  51.  
  52. int main() {
  53. Tnode *root;
  54.  
  55. root=createnode(15);
  56.  
  57. root->left=createnode(7);
  58. root->right=createnode(25);
  59.  
  60. root->left->left=createnode(3);
  61. root->left->right=createnode(10);
  62.  
  63. root->right->left=NULL;
  64. root->right->right=createnode(50);
  65.  
  66. root->left->right->left=createnode(8);
  67. root->left->right->right=createnode(12);
  68.  
  69. root->left->right->left->left=NULL;
  70. root->left->right->left->right=createnode(9);
  71.  
  72. root->left->right->right->left=createnode(11);
  73. root->left->right->right->right=createnode(14);
  74.  
  75. root->right->right->left=createnode(30);
  76. root->right->right->right=createnode(55);
  77.  
  78. root->right->right->right->left=createnode(52);
  79. root->right->right->right->right=NULL;
  80.  
  81. //inorder(root);
  82.  
  83. printf("%d",kthsmallest(root,5));
  84.  
  85. return 0;
  86. }
  87.  
  88.  
  89.  
stdin
Standard input is empty
compilation info
prog.c: In function ‘createnode’:
prog.c:23: warning: control reaches end of non-void function
stdout
10