Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
func levelOrder(_ root: TreeNode?) -> [[Int]] { guard let root = root else { return [] } var q = [TreeNode](), lists = [[Int]]() q.append(root) while !q.isEmpty { lists.append(q.map { $0.val }) q = q.reduce([]) { l, t in l + [t.left, t.right] }.compactMap({$0}) } return lists } |