通过率 58.8%
题目描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[20,9],
[15,7]
]
提示:
节点总数 <= 1000
思路:
这题基于另一道(here)进行了改变,新增了偶数行反向打印的条件,方案如下:
判断是奇数行还是偶数行,如果res的长度为奇数,那么当前得到的temp就是偶数行,偶数行反序,只要执行temp.reverse()再弹入res即可
1 /*JavaScript*/ 2 /** 3 * Definition for a binary tree node. 4 * function TreeNode(val) { 5 * this.val = val; 6 * this.left = this.right = null; 7 * } 8 */ 9 /** 10 * @param {TreeNode} root 11 * @return {number[][]} 12 */ 13 var levelOrder = function(root) { 14 if(!root) return [] 15 const que = [] 16 const res = [] 17 que.push(root) 18 19 while(que.length) { 20 let len = que.length 21 const temp = [] 22 while(len--) { 23 if(que[0].left) que.push(que[0].left) 24 if(que[0].right) que.push(que[0].right) 25 temp.push(que.shift().val) 26 } 27 if(res.length % 2) temp.reverse() 28 res.push(temp) 29 } 30 return res 31 };