对称二叉树(力扣101)

题目如下:

思路

对于这道题, 我会采用递归的解法.

看着对称的二叉树,

写下判断对称的条件,

再进入递归即可.

值得注意的是,

代码中会有两个函数,

第一个是isSymmetric,第二个是judge.

因为这里会考虑到一种特殊情况,

那就是

二叉树的根结点(最上面的那个),它会单独用isSymmetric判断一下,

judge则用来判断根节点的左右两边结点的对称.

代码中有具体注释,请大家看代码.

代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


//注意传参,比较的是一个节点的左右子树
bool judge(struct TreeNode*left,struct TreeNode*right)
{

    if(left==NULL&&right==NULL)
    {
        return true;
    }
    if(left==NULL||right==NULL)
    {
        return false;
    }
    if(left->val!=right->val)
    {
        return false;
    }

    //再次注意传参,由示例的图可知传参参数的对称性
    return judge(left->left,right->right)&&judge(left->right,right->left);
}

bool isSymmetric(struct TreeNode* root) {

    //空树对称返回true
    if(root==NULL)
    {
        return true;
    }

    //左右子树都为空
    if(root->left==NULL&&root->right==NULL)
    {
        return true;
    }

    //左右子树中有一颗不为空
    if(root->left==NULL||root->right==NULL)
    {
        return false;
    }

    //判断是否对称
    if(root->left->val!=root->right->val)
    {
        return false;
    }

    //进入递归
    return judge(root->left,root->right);
}
相关推荐
前端小L1 小时前
回溯算法专题(八):精细化切割——还原合法的「IP 地址」
数据结构·算法
Hcoco_me7 小时前
大模型面试题17:PCA算法详解及入门实操
算法
跨境卫士苏苏7 小时前
亚马逊AI广告革命:告别“猜心”,迎接“共创”时代
大数据·人工智能·算法·亚马逊·防关联
云雾J视界8 小时前
当算法试图解决一切:技术解决方案主义的诱惑与陷阱
算法·google·bert·transformer·attention·算法治理
Xの哲學8 小时前
Linux Miscdevice深度剖析:从原理到实战的完整指南
linux·服务器·算法·架构·边缘计算
夏乌_Wx8 小时前
练题100天——DAY23:存在重复元素Ⅰ Ⅱ+两数之和
数据结构·算法·leetcode
立志成为大牛的小牛9 小时前
数据结构——五十六、排序的基本概念(王道408)
开发语言·数据结构·程序人生·算法
沿着路走到底9 小时前
将数组倒序,不能采用reverse,算法复杂度最低
算法
IDIOT___IDIOT9 小时前
KNN and K-means 监督与非监督学习
学习·算法·kmeans