LeetCode 144. Binary Tree Preorder Traversal
才5%的内存。(⊙﹏⊙),如果不写free是8.7,写了free是9.6
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* preorderTraversal(struct TreeNode* root, int* returnSize) {
if (root == NULL) {
*returnSize = 0;
return (int*)malloc(sizeof(int) * 0);
}
int val = root->val;
int left = 0;
int right = 0;
int *leftRet = preorderTraversal(root->left, &left);
int *rightRet = preorderTraversal(root->right, &right);
*returnSize = left + 1 + right;
int *ret = (int*)malloc(sizeof(int) * *returnSize);
ret[0] = val;
for(int i=0; i<left; i++) {
ret[i + 1] = leftRet[i];
}
free(leftRet);
for(int i=0; i<right; i++) {
ret[i + left + 1] = rightRet[i];
}
free(rightRet);
return ret;
}
后面改成循环,不知道会怎么样?