题目描述
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as: [ [15,7], [9,20], [3] ]
解题思路
这个题目与104题一样,只不过是在遍历的过程中, 将层数的变量改为数组, 来存储每一层的value
示例代码
func levelOrderBottom(_ root: TreeNode?) -> [[Int]] {
guard let root = root else { return [] }
var stack = [[TreeNode]]()
stack.append([root])
var result: [[Int]] = []
result.append([root.val])
while !stack.isEmpty {
let last = stack.removeLast()
if last.count > 0 {
var line = [TreeNode]()
var lineV: [Int] = []
last.forEach { (node) in
if let left = node.left {
line.append(left)
lineV.append(left.val)
}
if let right = node.right {
line.append(right)
lineV.append((right).val)
}
}
if line.count > 0 {
stack.append(line)
result.append(lineV)
}
}
}
return result.reversed()
}