题目:给定一个二叉树,返回它的 后序 遍历。
AC代码:使用迭代方式
维护一个栈空间,,按后续遍历的方式将节点存到栈中,并以此打印栈顶节点值
int* postorderTraversal(struct TreeNode* root, int* returnSize){
if(root == NULL){
*returnSize = 0;
int* res = (int *)malloc(sizeof(int) * 1);
return res;
}
struct TreeNode* stack1[1000];
int pt_stack1 = -1;
int stack_res[1000] = {0};
int pt_res= -1;
stack1[++pt_stack1] = root;
while(pt_stack1 >= 0){
struct TreeNode* temp = stack1[pt_stack1--];
if(temp->left != NULL){
stack1[++pt_stack1] = temp->left;
}
if(temp->right != NULL){
stack1[++pt_stack1] = temp->right;
}
stack_res[++pt_res] = temp->val;
}
int* ans = (int *)malloc(sizeof(int) * (pt_res + 1) );
for(int i=0;i <= pt_res;++i){
*(ans + i) = stack_res[pt_res - i];
}
*returnSize = pt_res + 1;
return ans;
}