非递归,按照前序遍历根右左遍历,然后reverse答案
class Solution {
public:
vector postorderTraversal(TreeNode* root) {
vector ans;
stack stk;
while(root||stk.size()){
while(root){
ans.push_back(root->val);
stk.push(root);
root=root->right;
}
root=stk.top()->left;
stk.pop();
}
reverse(ans.begin(),ans.end());
return ans;
}
};
代码:
class Solution {
public:
vector ans;
vector postorderTraversal(TreeNode* root) {
dfs(root);
return ans;
}
void dfs(TreeNode* root){
if(!root) return ;
dfs(root->left);
dfs(root->right);
ans.push_back(root->val);
}
};