请实现一个函数按照之字形顺序从上向下打印二叉树。
即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
输入如下图所示二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]
8
/ \
12 2
/ \
6 4
输出:[[8], [2, 12], [6, 4]]
code
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var printFromTopToBottom = function(root) {
if (!root) return []
const q = [[root,0]]
const res = []
while(q.length) {
const [node, lev] = q.shift() //从队头取出
if(!res[lev]) res[lev] = []
//奇数偶数层
if(lev % 2 == 1) {
res[lev].unshift(node.val)
} else {
res[lev].push(node.val)
}
// 左右节点入队
if(node.left) q.push([node.left,lev+1])
if(node.right) q.push([node.right,lev+1])
}
return res
};