后序遍历:左 - 右 - 根
递归版本
- 注意递归的结束条件
root == null
- 按照遍历的顺序每次遇到root将答案压入结果数组中去
var postorderTraversal = function(root) {
const res = [];
dfs(root);
return res;
function dfs(root) {
if (root == null) return;
dfs(root.left);
dfs(root.right);
res.push(root.val);
}
};
迭代版本
后序: 左 右 根
前序: 根 左 右
按照前序遍历的顺序,然后再翻转一下即可……
var postorderTraversal = function(root) {
const res = [], stack = [];
while (root || stack.length) {
while (root) {
res.push(root.val);
stack.push(root);
root = root.right;
}
root = stack.pop();
root = root.left;
}
return res.reverse();
};