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

二叉树-层序遍历

  • 按照一层层从上到下,从左到右的顺序进行遍历,本质是BFS

  • 递归方法

    • 利用前序遍历+分层存储的方式,达到层序遍历的效果
    function levelOrderTraversal(root) {
        const res = [];
        let levelOrderTraverseNode(node, level) {
            if (!node) return;
            res[level] = res[level] || [];
            res[level].push(node.key);
            levelOrderTraverseNode(node.left, level + 1);
            levelOrderTraverseNode(node.right, level + 1);
        }
        levelOrderTraverseNode(root, 0);
    
        return res;
    }
    
  • 迭代方法,也叫队列方法【常用】

    function levelOrderTraversal(root) {
        if (!root) return [];
        const res = [];
        const queue = [root];
        let level = 0;
        while(queue.length > 0) {
            res[level] = [];
            const len = queue.length;
            for (let i = 0; i < len; i++) {
                const node = queue.shift();
                res[level].push(node.key);
                if (node.left) queue.push(node.left);
                if (node.right) queue.push(node.right);
            }
            level++:
        }
        return res;
    }