题目描述
给你二叉树的根节点 root
,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例1
1 2
| 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[20,9],[15,7]]
|
示例2
示例3
提示:
- 树中节点数目在范围
[0, 2000]
内
-100 <= Node.val <= 100
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| func zigzagLevelOrder(_ root: TreeNode?) -> [[Int]] { guard let root = root else { return [] } var res = [[Int]]() var queue = [root] var isLeft2Right = true while !queue.isEmpty { var levelRes = [Int]() var length = queue.count while length > 0 { let cur = queue.removeFirst() if isLeft2Right { levelRes.append(cur.val) } else { levelRes.insert(cur.val, at: 0) } if let left = cur.left { queue.append(left) } if let right = cur.right { queue.append(right) } length -= 1 } isLeft2Right = !isLeft2Right res.append(levelRes) } return res }
|