Skip to content

二叉树的层序遍历

问题

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000

答案

js
var levelOrder = function(root) {
    if(!root){
        return [];
    }
    let q=[];
    let res=[];
    q.push(root);
    while(q.length>0){
        let len=q.length;
        let tmp=[];
        while(len--){
            let node=q.shift();
            if(node.left) q.push(node.left);
            if(node.right) q.push(node.right);
            tmp.push(node.val);
        }
        res.push(tmp);
    }
    return res;
}

扩展

首先设置一个队列,一个结果数组

先把根节点推进去,开始第一个循环,条件是队列不为空

嵌套第二个循环,条件是第一个循环时的队列长度,一层的循环,设置一个tmp用来存该层元素[]

弹出头后压入头的左右节点