LeetCode-103-二叉树的锯齿形层次遍历
1. 题目:
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回锯齿形层次遍历如下:
1 | [ |
2. 解题:
首先是二叉树的层次遍历,我们知道使用队列。
但是需要注意的是:
a)锯齿状,先从左往右,再从右往左进行下一层遍历,因此我们需要知道每一层的遍历方向。使用一个boolean
变量leftToRight
。
b)每一层元素使用一个ArrayList
存放。因此我们需要知道何时一层开始,何时一层结束。使用两个变量,当前层数量num
,下一层数量next
,num == 0
时,表示当前层结束。
代码:
1 | /** |