size是每层的节点数= =。。
func largestValues(_ root: TreeNode?) -> [Int] {
if root == nil {
return []
}
var array = Array<TreeNode>()
array.append(root!)
var valueArray = Array<Int>()
while !array.isEmpty {
var size = array.count
var maxValue = Int.min
while size != 0 {
let tempNode = array.removeFirst()
if tempNode.left != nil {
array.append(tempNode.left!)
}
if tempNode.right != nil {
array.append(tempNode.right!)
}
size -= 1
maxValue = max(maxValue, tempNode.val)
}
valueArray.append(maxValue)
}
return valueArray
}
不用双循环的算法= =. 但是吧。。看leetcode的AC 基本相差不多
func largestValues(_ root: TreeNode?) -> [Int] {
if root == nil {
return []
}
var array = Array<TreeNode>()
array.append(root!)
var valueArray = Array<Int>()
var count = 1
var maxValue = Int.min
while !array.isEmpty {
let tempNode = array.removeFirst()
count -= 1
maxValue = max(maxValue, tempNode.val)
if let left = tempNode.left {
array.append(left)
}
if let right = tempNode.right {
array.append(right)
}
if count == 0 {
count = array.count
valueArray.append(maxValue)
maxValue = Int.min
}
}
return valueArray
}
网友评论