[路飞][LeetCode]103_二叉树的锯齿形层序遍历

151 阅读1分钟

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

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

例如:

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

    3
   / \
  9  20
    /  \
   15   7

返回锯齿形层序遍历如下:

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

解题思路

解题代码

var zigzagLevelOrder = function(root) {
    let arr = []
    function pmap(node,i){
        if(!node) return
        if(!arr[i]) arr[i] = []
        if(i%2){
             arr[i].unshift(node.val)
        }else{
             arr[i].push(node.val)
        }
        if(node.left) pmap(node.left,i+1)
        if(node.right) pmap(node.right,i+1)
    }
    pmap(root,0)
    return arr
};

当你快乐时,你要想,这快乐不是永恒的;当你痛苦时,你要想,这痛苦也不是永恒的。

如有任何问题或建议,欢迎留言讨论!