C Solution | Iterative Solution
```\n//RECURSIVE SOLUTION\n// void * postVisit(struct Node root, int v, int index){\n//     if(root==NULL)\n//         return NULL;\n//     for(int i=0;inumChil
```\n//RECURSIVE SOLUTION\n// void * postVisit(struct Node* root, int* v, int* index){\n//     if(root==NULL)\n//         return NULL;\n//     for(int i=0;i<root->numChildren; i++)\n//         postVisit(root->children[i],v,index);\n//     v[(*index)++]=root->val;\n//     return NULL;\n    \n// }\n\n//ITERATIVE SOLUTION\nvoid * postVisit(struct Node* root, int* v, int* index){\n    int i=0, count[1000]={0};\n    struct Node* prev[1000];\n    prev[i++]=NULL;\n    while(root!=NULL){\n        if(root->numChildren == count[i]){\n            v[(*index)++]=root->val;\n            count[i--]=0;\n            root = prev[i];\n        }\n        else{\n            prev[i] = root;\n            root = root->children[count[i++]++];\n        }\n    }\n    return NULL;\n}\n\nint* postorder(struct Node* root, int* returnSize) {\n    int *v = (int*)calloc(10000, sizeof(int)), index=0;\n    postVisit(root, v, &index);\n    *returnSize = index;\n    return v;\n}
['C', 'Iterator']