101. 对称二叉树

对称二叉树

题目描述:

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100

思路:

使用两个指针,一个往左边,一个往右边,判断p和q相不相等

代码:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func isSymmetric(root *TreeNode) bool {
    if root== nil{
        return true
    }
    var p,q *TreeNode
    p,q = root,root
    if root.Left==nil && root.Right== nil{
        return true
    }
    return is(p,q)

}

func is(p,q *TreeNode) bool{
    if p == nil && q == nil {
        return true
    }
    if p==nil || q == nil{
       
        return false
    }
    if p.Val != q.Val{
       
        return false
    }
    flag := is(p.Left,q.Right)
    flag2 :=is(p.Right,q.Left)
    return flag && flag2
    
}

代码效率:

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.9 MB, 在所有 Go 提交中击败了69.43%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!