Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct TreeNode* build(int s, int e, int* inorder, int inorderSize, int* postorder, int* postorderSize) {
- if (s > e) return NULL;
- if ((*postorderSize) < 0) return NULL;
- struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
- root->left = NULL;
- root->right = NULL;
- root->val = *(postorder + (*postorderSize));
- (*postorderSize)--;
- printf("Assigned %d to root.\n", root->val);
- if (s == e) return root;
- int i, index;
- for (i = s; i <= e; i++) {
- if (*(inorder + i) == root->val) {
- index = i;
- break;
- }
- }
- root->right = build(index + 1, e, inorder, inorderSize, postorder, postorderSize);
- root->left = build(s, index - 1, inorder, inorderSize, postorder, postorderSize);
- return root;
- }
- struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize){
- int pIndex = postorderSize - 1;
- return build(0, postorderSize - 1, inorder, inorderSize, postorder, &pIndex);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement