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
    };
    
  • 相关阅读:
    05.九个内置对象
    04.线程面试题-01
    03.反射杂谈
    02.Java动态代理实现与原理分析之静态代理
    01.JDBC技术摘要
    异步请求二
    表单验证(添加数据)
    异步请求(删除json数据)
    异步请求(解析json数据)
    异步请求(获取json数据)
  • 原文地址:https://www.cnblogs.com/baebae996/p/13930551.html
Copyright © 2011-2022 走看看