fork download
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. struct TreeNode {
  5. int val;
  6. struct TreeNode* left, * right;
  7. };
  8.  
  9. int tree_size(/*struct TreeNode* tree*/) { return 7; }
  10.  
  11. int* preorder_(struct TreeNode* tn, int* v) {
  12. *v++ = tn->val;
  13. if (tn->left) v = preorder_(tn->left, v);
  14. if (tn->right) v = preorder_(tn->right, v);
  15.  
  16. return v;
  17. }
  18.  
  19. int* preorder(struct TreeNode* tn) {
  20. if (tn) {
  21. int* v = malloc(tree_size(/*tn*/) * sizeof(int));
  22. preorder_(tn, v);
  23. return v;
  24. } else {
  25. return NULL;
  26. }
  27. }
  28.  
  29. int main(void) {
  30. // 4
  31. // 2 5
  32. // 1 3 6 7
  33. struct TreeNode
  34. lleft = {1}, lright = {3}, leftroot = {2, &lleft, &lright},
  35. rleft = {6}, rright = {7}, rightroot = {5, &rleft, &rright},
  36. root = {4, &leftroot, &rightroot};
  37. int *v, i;
  38.  
  39. v = preorder(&root);
  40. for (i = 0; i < tree_size(/*tn*/); i++) {
  41. printf("%d ", v[i]); // 4 2 1 3 5 6 7
  42. }
  43. free(v);
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
4 2 1 3 5 6 7