根据从上到下打印二叉树II中的方法,添加一个参数来判断以哪个方向来存储数据。
也可以利用res的奇偶性来判断当前层的存储方向。
且可以再for循环结束之后,利用reverse()方法来对temp进行翻转。
1 /** 2 * Definition for a binary tree node. 3 * function TreeNode(val) { 4 * this.val = val; 5 * this.left = this.right = null; 6 * } 7 */ 8 /** 9 * @param {TreeNode} root 10 * @return {number[][]} 11 */ 12 var levelOrder = function(root) { 13 if(root == null) return []; 14 let arr = [root], res = [], rev = false; 15 while(arr.length > 0) { 16 let temp = []; 17 for(let i = arr.length; i > 0; i--) { 18 root = arr.shift(); 19 if(rev) { 20 temp.unshift(root.val); 21 }else { 22 temp.push(root.val); 23 } 24 if(root.left) { 25 arr.push(root.left); 26 } 27 if(root.right) { 28 arr.push(root.right); 29 } 30 } 31 rev = !rev; 32 res.push(temp); 33 } 34 return res; 35 };