描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树之字形层序遍历的结果是
[
[3],
[20,9],
[15,7]
]
示例1
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
*
* @param root TreeNode类
* @return int整型二维数组
*/
// 奇数层:从左向右; 偶数层:从右向左
function zigzagLevelOrder( root ) {
let res = [];
//1. 树空
if(!root) return res;
let stack = [root];
let k = 0;
while(stack.length){ //注意此处不能直接写 !stack
let len = stack.length;
let temp = [];
for(let j=0; j<len; j++){
let r = stack.shift(); //队头出(先进先出)
temp.push(r.val);
if(r.left){stack.push(r.left)}
if(r.right){stack.push(r.right)}
}
k++;
if(k%2 ==0 ){ res.push(temp.reverse()); }
else {res.push(temp);}
}
return res;
}
module.exports = {
zigzagLevelOrder : zigzagLevelOrder
};