问题描述
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
问题分析
此问题与二叉树的前序遍历分析类似,只是在数组合并的时候顺序发生一下变化就行了。
代码
int* postorderTraversal(struct TreeNode* root, int* returnSize) {
if(root!=NULL){
int *left = postorderTraversal(root->left, returnSize);
int leftLength = *returnSize;
int *right = postorderTraversal(root->right, returnSize);
int rightLength = *returnSize;
int num = leftLength + rightLength;
int *answer = (int *)malloc(sizeof(int)*(num+1));
int k = 0;
for(int i=0; i<leftLength; i++){
answer[k++] = left[i];
}
for(int i=0; i<rightLength; i++){
answer[k++] = right[i];
}
answer[k++] = root->val;
free(left);
free(right);
left = NULL;
right = NULL;
*returnSize = num+1;
return answer;
}
*returnSize = 0;
return NULL;
}