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. Node* Populate(Node* root)
  53. {
  54. if(root!=NULL)
  55. {
  56. if(root->next==NULL)
  57. root->next = Populate(root->right);
  58. else
  59. Populate(root->right);
  60. if(root->left!=NULL)
  61. {
  62. root->left->next = root;
  63. return Populate(root->left);
  64. }
  65. else
  66. {
  67. return root;
  68. }
  69. }
  70. else
  71. {
  72. return NULL;
  73. }
  74. }
  75.  
  76. int main()
  77. {
  78. Node* start;
  79. Node* root = (Node*)malloc(sizeof(Node));
  80. root->data = 4;
  81. root->left = NULL;
  82. root->right= NULL;
  83. root->next= NULL;
  84.  
  85. AddNode(root,3);
  86. AddNode(root,7);
  87. AddNode(root,1);
  88. AddNode(root,2);
  89. AddNode(root,6);
  90. AddNode(root,9);
  91. AddNode(root,17);
  92. AddNode(root,11);
  93. AddNode(root,10);
  94. AddNode(root,3);
  95. AddNode(root,4);
  96.  
  97. start = Populate(root);
  98.  
  99. while(start!=NULL)
  100. {
  101. printf("%d\t",start->data);
  102. start = start->next;
  103. }
  104.  
  105. return 1;
  106. }
Runtime error #stdin #stdout 0.01s 1852KB
stdin
Standard input is empty
stdout
1	3	4	6	7	9	10	11	17