「Leetcode」101.对称二叉树

使用语言:C语言
题目思路

  • 第一层的根节点可以不用判断
  • 每一次递归都将该树拆分为左树和右树
  • 先判断左树和右树根节点是否一样,再判断左树和右树是否对称
  • 判断两棵树是否对称可以使用之前的思路进行改写「Leetcode」100.相同的树

图片描述
我自己手写的
代码实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

bool _isSymmetric(struct TreeNode* t1, struct TreeNode* t2)//判断是否对称
{
    if(t1==NULL && t2==NULL)
    {
        return true;
    }
    if(t1==NULL || t2==NULL)
    {
        return false;
    }
    if(t1->val != t2->val)
    {
        return false;
    }
    return _isSymmetric(t1->left,t2->right) && _isSymmetric(t1->right,t2->left);
}

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

猜你喜欢

转载自blog.csdn.net/NanlinW/article/details/97274384
今日推荐