Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.01 KB | None | 0 0
  1.  
  2. struct TreeNode* build(int s, int e, int* inorder, int inorderSize, int* postorder, int* postorderSize) {
  3.     if (s > e) return NULL;
  4.     if ((*postorderSize) < 0) return NULL;
  5.     struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
  6.     root->left = NULL;
  7.     root->right = NULL;
  8.     root->val = *(postorder + (*postorderSize));
  9.     (*postorderSize)--;
  10.     printf("Assigned %d to root.\n", root->val);
  11.     if (s == e) return root;
  12.     int i, index;
  13.     for (i = s; i <= e; i++) {
  14.         if (*(inorder + i) == root->val) {
  15.             index = i;
  16.             break;
  17.         }
  18.     }
  19.     root->right = build(index + 1, e, inorder, inorderSize, postorder, postorderSize);
  20.     root->left = build(s, index - 1, inorder, inorderSize, postorder, postorderSize);
  21.     return root;
  22. }
  23.  
  24. struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize){
  25.    int pIndex = postorderSize - 1;
  26.    return build(0, postorderSize - 1, inorder, inorderSize, postorder, &pIndex);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement