力扣101. 对称二叉树(结构体与递归)

101. 对称二叉树

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

在这里插入图片描述

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

在这里插入图片描述

进阶:

你可以运用递归和迭代两种方法解决这个问题吗?

题解:

一个简单的递归运用在结构体指针上的问题,注意指向即可。

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool cmp(struct TreeNode *i,struct TreeNode *j)
{
    
    
    if(i==NULL&&j==NULL)
    {
    
    
        return 1;
    }
    else if(i==NULL||j==NULL)
    {
    
    
        return 0;
    }
    if(i->val!=j->val)
    {
    
    
        return 0;
    }
    return cmp(i->left,j->right)&&cmp(i->right,j->left);
}

bool isSymmetric(struct TreeNode* root){
    
    
    if(root==NULL)
    {
    
    
        return 0;
    }
    return cmp(root->left,root->right);
}

猜你喜欢

转载自blog.csdn.net/xiangguang_fight/article/details/115281065