2023年11月22日 星期三

[106] Construct Binary Tree from Inorder and Postorder Traversal

好像要再整理一下比較漂亮QQ

但是算了啦沒有很痛苦的debug就PASS了
我對自己的要求是很低的XD 已滿意 XDDDDD

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize) {
if (inorderSize < 1)
return NULL;
if (inorderSize==1)
{
struct TreeNode* binaryT= calloc (1, sizeof(struct TreeNode));
binaryT->val = inorder[0];
return binaryT;
}
int root = postorder[postorderSize-1];
int idx=0;
for (int i=0; i<inorderSize;i++)
if (inorder[i]==root)
{
idx=i;
break;
}
int lsize = idx;
int rsize = (inorderSize-idx -1);

struct TreeNode *retT= calloc (1, sizeof(struct TreeNode));
retT->val = inorder[idx];
retT->left = buildTree(inorder, lsize, postorder,lsize);
retT->right = buildTree(inorder+(idx+1), rsize, postorder+lsize,rsize);
return retT;
}

沒有留言:

張貼留言