101. 对称二叉树 leetcode

2018-11-02  本文已影响4人  出来遛狗了
image.png
/**
 * 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 isSymmetric(_ root: TreeNode?) -> Bool {
        if root?.left == nil ,root?.right == nil{
            return true
        }else if root?.left?.val != root?.right?.val {
            return false
        }
        
        return self.isSame(left: root?.left, right: root?.right)
    }
    func isSame(left: TreeNode?,right: TreeNode?) -> Bool{
        
        if left != nil {
            if left?.val == right?.val{
                if !isSame(left: left?.left, right: right?.right){
                    return false
                }
                if !isSame(left: right?.left, right: left?.right){
                    return false
                }
            }else{
                return false
            }
        }else{
            if right != nil{
                return false;
            }else{
                return true
            }
        }
        return true;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读