但是算了啦沒有很痛苦的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;
}
沒有留言:
張貼留言