LeetCode--对称二叉树 ( Symmetric Tree ) ( C语言版 )

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

思路 : 根据对称二叉树的特性, 可以使用递归去求解, 这里只需要判断左孩子的左边和右孩子的右边 或者 左孩子的右边和右孩子的左边是否相等或为空即可;

代码如下 : 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool MyisSymmetric(struct TreeNode* cur,struct TreeNode* tmp) 
{
    //当左右节点都为空时,时满足条件
    if(!cur&&!tmp)
        return true;
    //当左右节点其中有一个为空时,不满足条件
    if(!cur||!tmp)
        return false;
    //当左右节点不相等时,不满足条件
    if(tmp->val!=cur->val)
        return false;
    //使用递归判断左孩子的左边和右孩子的右边,左孩子的右边和右孩子的左边是否满足条件
    return MyisSymmetric(cur->left,tmp->right)&&MyisSymmetric(cur->right,tmp->left);
}
bool isSymmetric(struct TreeNode* root) {
    //当跟节点为空时,满足条件
    if(root==NULL)
        return true;
    return MyisSymmetric(root->left,root->right);
}

猜你喜欢

转载自blog.csdn.net/ds19980228/article/details/82289830