Leetcode103. 二叉树的锯齿形层序遍历

121 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、题目描述:

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

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/bi…

二、思路分析:

层序遍历

三、AC 代码:

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var zigzagLevelOrder = function(root) {
    if(!root) return []
    let flag=true;
    let res=[];
    let temp1=[root];
    let temp2=[root.val];
    while(temp1.length){
        let len=temp1.length;
        res.push(flag?[...temp2]:[...temp2.reverse()])
        temp2=[]
        while(len--){
            let t=temp1.shift();
            if(t.left) {
                temp2.push(t.left.val);
                temp1.push(t.left)
            }
            if(t.right) {
                temp2.push(t.right.val);
                temp1.push(t.right)
            }
        }
        flag=!flag
    }
    return res;
};

四、总结:

层序遍历