[路飞]leetcode-103.二叉树的锯齿形层序遍历

95 阅读1分钟

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。力扣原文

示例 1:

输入: root = [3,9,20,null,null,15,7]
输出: [[3],[20,9],[15,7]]

示例 2:

输入: root = [1]
输出: [[1]]

示例 3:

输入: root = []
输出: []

 

解题代码:

var zigzagLevelOrder = function (root) {
    if(!root)return []
    let result=[]
    let curLevaQueue=[root]
    let leva=0
    while(curLevaQueue.length){
       let vals=[];
       let nextLevaQueue=[]
        while(curLevaQueue.length){
           let {val,left,right}=curLevaQueue.shift()
            if(leva%2){
                vals.unshift(val)
            }else{
                vals.push(val)
            }
            left&&nextLevaQueue.push(left)
            right&&nextLevaQueue.push(right)
        }
        result.push(vals)
        leva++
        curLevaQueue=nextLevaQueue

    }
    return result
};