欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

101 对称二叉树

程序员文章站 2024-01-11 16:33:52
...

101 对称二叉树
这道题的思路与上一道题很相像,只不过第一道题中 是两棵树比较,这道题是一棵树比较,而且第一道题要求的是左右结点相等,而第二道题要求的是左右子树成镜像关系。

public class Solution {
    public bool IsSymmetric(TreeNode root) {
        if (root == null)
            return true;
        return IsEqual(root.left, root.right);
    }
    
    private bool IsEqual(TreeNode p, TreeNode q)
    {
        if (p == null && q == null)
            return true;
        if (p == null || q == null)
        //if ((p != null && q == null) || (p == null && q != null))
            return false;
        if (p.val != q.val)
            return false;
        if (IsEqual(p.left, q.right))
            return IsEqual(p.right, q.left);
        return false;
        // 后三行代码同样可以优化使之更简洁
        // return IsEqual(p.left, q.right) && IsEqual(p.right, q.left);
    }
}

101 对称二叉树