二叉树的后序遍历

4/8/2022 二叉树深度优先遍历

# 代码

/**
 * 递归写法
 * @param {TreeNode} root
 * @return {number[]}
 */
var postorderTraversal = function(root) {
    let result = [];
    function _postorderTraversal(root, result){
        // 确定递归出口
        if(!root) return;
        _postorderTraversal(root.left, result);
        _postorderTraversal(root.right, result);
        result.push(root.val);
    }
    _postorderTraversal(root, result);
    return result;
};

// 后序遍历(本质和前序遍历一样),利用 `栈` 实现
var postorderTraversal = function (root) {
    let res = [];
    if (!root) return res;
    let stack = [root];
    while (stack.length) {
        let node = stack.pop(); // 从栈中取出元素
        res.push(node.val);
        if (node.left) { // 往栈中放入元素
            stack.push(node.left)
        }
        if (node.right) { // 往栈中放入元素
            stack.push(node.right)
        }
    }
    return res.reverse()
};
Last Updated: 5/12/2023, 11:06:26 AM