Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

二叉树-后序遍历

  • 按照 左、右、中 的顺序进行遍历

    • 位于中间的父节点最后,因此叫后序
  • 递归方法【常用】

    function postOrderTraversal(root) {
        const res = [];
        let postOrderTraverseNode = (node) => {
            if (!node) return;
            postOrderTraverseNode(node.left);
            postOrderTraverseNode(node.right);
            res.push(node.key);
        }
        postOrderTraverseNode(root);
        return res;
    }
    
  • 迭代方法,也叫栈方法

    • 和前序遍历差不多,不过利用了倒序插入res的方式,然后让left先入这样就会后出,这样就能在res中占据先头地位,实现左右中的后序遍历
    function postOrderTraversalByStack(root) {
        if (!root) return [];
        const res = [];
        const stack = [root];
        while(stack.length > 0) {
            let topNode = stack.pop();
            res.unshift(topNode.key);
            if (topNode.left) {
                stack.push(topNode.left);
            }
            if (topNode.right) {
                stack.push(topNode.right);
            }
        }
        return res;
    }