swift迭代检测对称二叉树



func isSymmetric(_ root: TreeNode?) -> Bool {
    guard let root = root else {
        return true
    }
    var queue1: [TreeNode] = []
    var queue2: [TreeNode] = []
    queue1.append(root)
    queue2.append(root)
    while queue1.count > 0 {
        let left = queue1.removeFirst()
        let right = queue2.removeFirst()
        if left.val != right.val {
            return false
        }
        let i = left.left
        let j = left.right
        let x = right.left
        let y = right.right
        if i == nil && y != nil || i != nil && y == nil {
            return false
        }
        if j == nil && x != nil || j != nil && x == nil {
            return false
        }
        if i != nil && y != nil {
            queue1.append(i!)
            queue2.append(y!)
        }
        if j != nil && x != nil {
            queue1.append(j!)
            queue2.append(x!)
        }
    }
    return true
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理