LeetCode 103. 二叉树的锯齿形层序遍历
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例 1:
输入:root = [3,9,20,null,null,15,7] |
示例 2:
输入:root = [1] |
示例 3:
输入:root = [] |
提示:
树中节点数目在范围 [0, 2000] 内 |
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
层次遍历当然是使用队列实现。Queue
在Java中是一个接口,接口下有add
,offer
,poll
,peek
等方法。LinkedList
类实现了这个接口(常用的还有优先级队列PriorityQueue
),所以我们在这里使用LinkedList
,但我们并不直接将对象赋值给Queue
接口,因为我们还希望使用List
接口下的get
、remove
等方法。所以这里我们直接使用LinkedList<TreeNode>
作为q
的类型。
/** |
算法中的dir
对象表示当前遍历的方向。
复杂度
- 时间复杂度:
。 - 空间复杂度:
。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿日哥的向量空间!