fork download
  1. #include<stdio.h>
  2. #include<malloc.h>
  3.  
  4. struct node
  5. {
  6. int data;
  7. struct node* left;
  8. struct node* right;
  9. struct node* next;
  10. };
  11.  
  12. typedef struct node Node;
  13.  
  14. void AddNode(Node* root, int number)
  15. {
  16. if(root->data==number)
  17. return;
  18. else if(root->data>number)
  19. {
  20. if(root->left!=NULL)
  21. {
  22. AddNode(root->left,number);
  23. }
  24. else
  25. {
  26. Node* newNode = (Node*)malloc(sizeof(Node));
  27. newNode->data = number;
  28. newNode->left = NULL;
  29. newNode->right= NULL;
  30. newNode->next= NULL;
  31. root->left = newNode;
  32. }
  33. }
  34. else if(root->data<number)
  35. {
  36. if(root->right!=NULL)
  37. {
  38. AddNode(root->right,number);
  39. }
  40. else
  41. {
  42. Node* newNode = (Node*)malloc(sizeof(Node));
  43. newNode->data = number;
  44. newNode->left = NULL;
  45. newNode->right= NULL;
  46. newNode->next= NULL;
  47. root->right= newNode;
  48. }
  49. }
  50. }
  51.  
  52. int KthSmallestElement(Node *root,int* currentElementNumber,int k)
  53. {
  54. if(root==NULL)
  55. return -1;
  56. else
  57. {
  58. int i = KthSmallestElement(root->left,&currentElementNumber,k);
  59. if(i==-1)
  60. {
  61. if(currentElementNumber==k)
  62. return root->data;
  63. else
  64. currentElementNumber++;
  65. return KthSmallestElement(root->right,&currentElementNumber,k);
  66. }
  67. else
  68. {
  69. return i;
  70. }
  71. }
  72. }
  73.  
  74.  
  75.  
  76. int main()
  77. {
  78. Node* root = (Node*)malloc(sizeof(Node));
  79. root->data = 4;
  80. root->left = NULL;
  81. root->right= NULL;
  82. root->next= NULL;
  83.  
  84. AddNode(root,3);
  85. AddNode(root,7);
  86. AddNode(root,1);
  87. AddNode(root,2);
  88. AddNode(root,6);
  89. AddNode(root,9);
  90. AddNode(root,17);
  91. AddNode(root,11);
  92. AddNode(root,10);
  93. AddNode(root,3);
  94. AddNode(root,4);
  95.  
  96. int *i = (int*)malloc(sizeof(int));
  97. i = 1;
  98. printf("%d",KthSmallestElement(root,&i,5));
  99.  
  100.  
  101. return 0;
  102. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
cc1: warnings being treated as errors
prog.c: In function ‘KthSmallestElement’:
prog.c:58: error: passing argument 2 of ‘KthSmallestElement’ from incompatible pointer type
prog.c:61: error: comparison between pointer and integer
prog.c:65: error: passing argument 2 of ‘KthSmallestElement’ from incompatible pointer type
prog.c: In function ‘main’:
prog.c:97: error: assignment makes pointer from integer without a cast
prog.c:98: error: passing argument 2 of ‘KthSmallestElement’ from incompatible pointer type
stdout
Standard output is empty