101. Symmetric Tree【力扣】

题意理解

给出一个二叉树,分析是否对称?

问题分析

copy一个同样的树出来,分别比较一个树的左子树和另一个树的右子树是否相同。

递归思想,异常情况的处理:

如果两个树对应的子树都为空,对称;

如果两个树有一个为空,非对称;

如果两个树对应的子树root值相同,且一个数的左子树等于另一个右子树。

其他

一个树本身对称比较麻烦,拷贝出一个树就容易了。学习

注意异常的处理。

    bool isSymmetric(TreeNode* root) {
        return isMirror(root, root); //判断两树是否是镜像
    }
    bool isMirror(TreeNode* lTree, TreeNode* rTree)
    {
        if (lTree == NULL && rTree == NULL)    //如果两数都是空树,true
            return true;
        if (lTree == NULL || rTree == NULL)    //如果只有一个是空树,false
            return false;
        return (lTree -> val == rTree -> val)  //根相等
            && isMirror(lTree -> left, rTree -> right)    //左树左子树镜像右树右子树
            && isMirror(lTree -> right, rTree -> left);    //左树右子树镜像右树左子树
    

链接

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值