fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct TNode
  5. {
  6. char data;
  7. struct TNode* left;
  8. struct TNode* right;
  9. };
  10.  
  11. struct TNode* newNode(char data);
  12.  
  13. struct TNode* arrayToTree(char arr[], int start, int end)
  14. {
  15. if (start > end)
  16. return NULL;
  17. int mid = (start + end)/2;
  18.  
  19. struct TNode *root = newNode(arr[mid]);
  20.  
  21. root->left = arrayToTree(arr, start, mid-1);
  22.  
  23. root->right - arrayToTree(arr, mid+1, end);
  24.  
  25. return root;
  26. }
  27.  
  28. struct TNode* newNode(char data)
  29. {
  30. struct TNode* node = (struct TNode*)malloc(sizeof(struct TNode));
  31.  
  32. node->data = data;
  33.  
  34. node->left = NULL;
  35.  
  36. node->right = NULL;
  37.  
  38. return node;
  39.  
  40. }
  41.  
  42. void preOrder(struct TNode* node)
  43. {
  44.  
  45. if (node == NULL)
  46. return;
  47. printf("%c", node->data);
  48. preOrder(node->left);
  49. preOrder(node->right);
  50. }
  51. void reverseArray(char *arr, int start, int end) {
  52. while(start<end) {
  53. char x = arr[start];
  54. arr[start++] = arr[end];
  55. arr[end--] = x;
  56. }
  57. }
  58.  
  59. void updateArray(char *arr, int n) {
  60. int size;
  61. for (size=0; arr[size]!='\0'; ++size);
  62. reverseArray( arr, 0, size - 1 );
  63. reverseArray( arr, 0, n-1);
  64. reverseArray( arr, n, size - 1 );
  65.  
  66. }
  67.  
  68. int main()
  69. {
  70. char arr[] = "iihnug*cpgrg";
  71. int n;
  72. for(n=0; arr[n]!='\0'; ++n);
  73. struct TNode *root = arrayToTree(arr, 0, n-1);
  74. preOrder(root);
  75. printf("-");
  76.  
  77. updateArray(arr, 4);
  78.  
  79. root = arrayToTree(arr, 0, n-2);
  80.  
  81. preOrder(root);
  82.  
  83. printf("-");
  84.  
  85. updateArray(arr, 2);
  86.  
  87. root = arrayToTree(arr, 0, n-1);
  88. preOrder (root);
  89.  
  90. printf("-");
  91.  
  92. updateArray(arr, 1);
  93.  
  94. root = arrayToTree(arr, 0, n-3);
  95.  
  96. preOrder(root);
  97. return 0;
  98. }
  99.  
Success #stdin #stdout 0s 5436KB
stdin
Standard input is empty
stdout
ghi-irp-gp*-g*g