题目
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回锯齿形层次遍历如下:
[
[3],
[20,9],
[15,7]
]
Swift解法
class Solution {
var array = [[Int]]()
func zigzagLevelOrder(_ root: TreeNode?) -> [[Int]] {
array.removeAll()
travel(root, level: 0)
for i in 0..<array.count {
if i % 2 == 1 {
array[i].reverse()
}
}
return array
}
func travel(_ node: TreeNode?, level: Int) {
if node == nil { return }
if level == array.count {
array.append([])
}
array[level].append(node!.val)
let nextLevel = level + 1
travel(node?.left, level: nextLevel)
travel(node?.right, level: nextLevel)
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal