剑指 Offer 32 - III. 从上到下打印二叉树 III(中等)

通过率 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 };

 

posted @ 2021-08-16 10:35  自在逍遥处  阅读(21)  评论(0编辑  收藏  举报