前序遍历是:
根 左 右
把前序遍历后面入栈顺序改一下:
根 右 左
最后反转一下
左 右 根
变成后序遍历了!
代码:
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> result;
stack<TreeNode*> treeStack;
if (!root) {
return {};
}
treeStack.push(root);
while (!treeStack.empty()) {
TreeNode* tempNode = treeStack.top();
treeStack.pop();
if (tempNode -> left) {
treeStack.push(tempNode -> left);
}
if (tempNode -> right) {
treeStack.push(tempNode -> right);
}
result.push_back(tempNode -> val);
}
reverse(result.begin(),result.end());
return result;
}
};```