1、题目描述
二叉树的后序遍历。
2、思路
后序遍历顺序为左右中。反过来也就是中右左。可以借助先序遍历的思想,先中右左遍历,再把答案逆序。
3、代码
vector<int> postorderTraversal(TreeNode* root) {
vector<int> ans;
if(root==NULL) return ans;
stack<TreeNode*>s;
while(root){
ans.push_back(root->val);
if(root->left)
s.push(root->left);
root=root->right;
if(root==NULL&&!s.empty()){
root = s.top();
s.pop();
}
}
reverse(ans.begin(),ans.end());
return ans;
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> ans;
if(root==NULL) return ans;
stack<TreeNode*>s;
s.push(root);
while(!s.empty()) {
TreeNode* t = s.top();
if(t->left == NULL && t->right == NULL) {
ans.push_back(t->val);
s.pop();
}
if(t->right) {
s.push(t->right);
t->right = NULL;
}
if(t->left) {
s.push(t->left);
t->left = NULL;
}
}
return ans;
}