107. 二叉树的层序遍历Ⅱ

广度优先遍历 BFS

解题思路

  1. leetcode🧑‍💻 102. 二叉树的层序遍历 题遍历方式一致;

  2. leetcode🧑‍💻 102. 二叉树的层序遍历 是自上而下将每一层的数据 pushres 中;

  3. 此题是自下而上将每一层的数据 unshiftres 中;

复杂度

  1. 时间复杂度:每个点进队出队各一次,故渐进时间复杂度为 O(n)

  2. 空间复杂度:队列中元素的个数不超过 n 个,故渐进空间复杂度为 O(n)

代码实现

var levelOrderBottom = function (root) {
    if (root === null) return [];

    const res = [];
    const queue = [root]; // 声明队列用于存储后续数据

    // 遍历队列
    while (queue.length) {
        let curLevel = []; // 针对本轮操作,创建一个数组
        let len = queue.length; // 一层的数据量

        while (len--) {
            // 将本次操作的结点出队
            const node = queue.shift();
            curLevel.push(node.val);

            // 检测是否存在左右子结点,如果有,入队即可
            node.left && queue.push(node.left);
            node.right && queue.push(node.right);
        }

        res.unshift(curLevel);
    }

    return res;
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 广度优先遍历 BFS
    1. 1.1. 解题思路
    2. 1.2. 复杂度
    3. 1.3. 代码实现