前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js 实现层序遍历

js 实现层序遍历

作者头像
蓓蕾心晴
发布2022-09-24 14:52:10
3K0
发布2022-09-24 14:52:10
举报
文章被收录于专栏:前端小叙前端小叙
代码语言:javascript
复制
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if(!root) return []
    let res = []
    let queue = [root]
    let count = 0  //  记录当前层级
    while(queue.length){
        console.log("queue",queue) 
        res[count] = [] //  初始化当前层级
        let countNum = queue.length  //  当前层级的节点数
        while(countNum--){  //  遍历当前层级的节点数
            let node = queue.shift()  // 从前开始取当前层级的节点
            res[count].push(node.val)  //  推入每层的节点值
            node.left && queue.push(node.left)  // 将当前层级的节点的左右节点推入栈中,供下一层级遍历
            node.right && queue.push(node.right)// 将当前层级的节点的左右节点推入栈中,供下一层级遍历
        }
        count++   //  层级+1
    }
    return res
};

基本逻辑:

层序遍历使用的时广度优先遍历,使用队列存取,先进先出,与广度优先遍历不同的是,广度优先遍历返回一个一维数组,不分层级,层序遍历分层级,返回多维数组,在每次遍历的过程中,把整层节点都处理完之后,再处理下一层

1. 将每一层的节点 push 进队列里

2. 对队列中所有节点获取其值,作为返回数组对应层级的值

3. 最终返回一个多维数组,每一维度代表一层,由高到低

参考:

https://blog.csdn.net/m0_52409770/article/details/123225716

https://blog.csdn.net/weixin_45771601/article/details/126215915

https://leetcode.cn/problems/binary-tree-level-order-traversal/solution/bfs-de-shi-yong-chang-jing-zong-jie-ceng-xu-bian-l/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档