/**
* Definition for a binary tree node.
* public class TreeNode {
* public var val: Int
* public var left: TreeNode?
* public var right: TreeNode?
* public init(_ val: Int) {
* self.val = val
* self.left = nil
* self.right = nil
* }
* }
*/
class Solution {
func isCompleteTree(_ root: TreeNode?) -> Bool {
guard root != nil else {
return false
}
var queue = [root!]
var isCompleted = false
while !queue.isEmpty {
let node = queue.removeFirst()
if node.left == nil && node.right != nil {
return false
}
if isCompleted && (node.left != nil || node.right != nil) {
return false
}
if node.left == nil || node.right == nil {
isCompleted = true
}
if node.left != nil {
queue.append(node.left!)
}
if node.right != nil {
queue.append(node.right!)
}
}
return true
}
}