Binary Tree Postorder Traversal

2850阅读 0评论2015-08-17 qinchaowhut
分类:C/C++


  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  * int val;
  5.  * struct TreeNode *left;
  6.  * struct TreeNode *right;
  7.  * };
  8.  */
  9. /**
  10.  * Return an array of size *returnSize.
  11.  * Note: The returned array must be malloced, assume caller calls free().
  12.  */
  13. int* postorderTraversal(struct TreeNode* root, int* returnSize) {
  14.     struct TreeNode *sk[100];
  15.     int flag[100]={0};
  16.     int sp=0;
  17.     int *arr=malloc(sizeof(int)*100);
  18.     *returnSize=0;
  19.     struct TreeNode *p=root;
  20.     while(p||sp)
  21.     {
  22.         if(p)
  23.         {
  24.             sk[sp++]=p;
  25.             p=p->left;
  26.         }
  27.         else if(flag[sp-1]==0)
  28.         {
  29.             p=sk[sp-1]->right;
  30.             flag[sp-1]=1;
  31.         }
  32.         else
  33.         {
  34.             flag[--sp]=0;
  35.             arr[*returnSize]=sk[sp]->val;
  36.             (*returnSize)++;
  37.         }
  38.     }
  39.     return arr;
  40. }

上一篇:Binary Tree Preorder Traversal
下一篇:Binary Tree Inorder Traversal