zoukankan      html  css  js  c++  java
  • LeetCode(102):二叉树的层序遍历

    题目描述

    image.png

    实现思路

    二叉树的层次遍历,是与广度优先搜索的特点相对应的
    原来的广度优先搜索代码如下:

    var bfs=function(root){
        var visited=new Array()
        if(root!==null){
            var queue=new Array
            queue.push(root)
    
            while(queue.length > 0){
                let temp=queue.shift()
                visited.push(temp)
    
                if(temp.left){
                    queue.push(temp.left)
                }
                if(temp.right){
                    queue.push(temp.right)
                }
            }
        }
        return visited
    }
    

    在这个基础上,我们需要使得:
    在每一轮循环开始之前,queue中的节点都是处于同一层级的
    这就需要我们在上一次循环中,将queue中所有节点的子节点都放入queue中
    也就是说,需要写一个嵌套的循环
    利用内层循环来遍历queue:
    先拿出队首元素(出队)
    再将其子节点放入queue

    内层循环结束后,将这一轮出队的元素,推入最终的结果数组中

    代码实现(Javascript)

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number[][]}
     */
    var levelOrder = function(root) {
        var visited=new Array()
        if(root!==null){
            var queue=new Array()
            queue.push(root)
    
            while(queue.length > 0){
                let levelSize=queue.length
                let currentLevel=new Array()
    
                for(let i=0;i<levelSize;i++){
                    let temp=queue.shift()
                    currentLevel.push(temp.val)
                    if(temp.left){
                        queue.push(temp.left)
                    }
                    if(temp.right){
                        queue.push(temp.right)
                    }
                }
                
                visited.push(currentLevel)
            }
        }
        return visited
    };
    
  • 相关阅读:
    安装Spring Tool Suite(STS)
    ES6,新增数据结构Set的用法
    在vue-cli生成的项目中使用karma+chrome进行单元测试
    利用babel-cli搭建支持ES6的node环境
    利用es-checker检测当前node对ES6的支持情况
    javascript精度问题与调整
    sessionStorage 、localStorage、cookie
    在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies
    wireshark抓取本地数据包
    【linux基础】How to write CMakeLists.txt file?
  • 原文地址:https://www.cnblogs.com/baebae996/p/13930551.html
Copyright © 2011-2022 走看看