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
    };
    
  • 相关阅读:
    前端之script标签注意事项
    前端之常用网址的整理
    前端之清除浮动
    三元表达式
    迭代器 生成器
    文件处理流程
    python中常见的内置函数
    匿名函数lambda
    模拟问路场景理解递归
    create auto increment row with select in postgreSQL
  • 原文地址:https://www.cnblogs.com/baebae996/p/13930551.html
Copyright © 2011-2022 走看看