zoukankan      html  css  js  c++  java
  • 剑指 Offer 32

    通过率 68.5%

    题目链接

    题目描述:

    从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7

    返回其层次遍历结果:

    [
    [3],
    [9,20],
    [15,7]
    ]

    提示:

    节点总数 <= 1000

    思路:

    这题和另一道很像(here),不过多了个分层打印的要求,难点也就在这里,看了一下Krahets大神的题解,queue.size()的操作真是厉害了~

     1 /*JavaScript*/
     2 /**
     3  * Definition for a binary tree node.
     4  * function TreeNode(val) {
     5  *     this.val = val;
     6  *     this.left = this.right = null;
     7  * }
     8  */
     9 /**
    10  * @param {TreeNode} root
    11  * @return {number[][]}
    12  */
    13 var levelOrder = function(root) {
    14     if(!root) return []
    15     const que = []
    16     const res = []
    17     que.push(root)
    18     while(que.length) { //遍历每一层
    19         let len = que.length //重点在这里,先把当前层的长度保存下来
    20         const temp = []
    21         while(len--) { //当len=0时表示此层遍历结束
    22             if(que[0].left) que.push(que[0].left)
    23             if(que[0].right) que.push(que[0].right)
    24             temp.push(que.shift().val)
    25         }
    26         res.push(temp)
    27     }
    28     return res
    29 };
  • 相关阅读:
    函数传参总结
    集合操作总结
    深浅拷贝总结
    三级列表展示
    文件操作总结
    vue-router之嵌套路由
    vue-router之动态路由
    Sublime编辑VUE实现代码高亮
    Windows系统下Vue开发环境搭建详解版
    C#调用快递鸟电子面单API实现批量打印电子面单功能
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/15143022.html
Copyright © 2011-2022 走看看