跳转至

101. 对称二叉树

难度:简单

题目

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

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

    1
   / \
  2   2
 / \ / \
3  4 4  3

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

    1
   / \
  2   2
   \   \
   3    3

进阶:

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

Reference

题解

基本思路: 递归判断两个根节点是否成镜像。

代码如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isMirrored(struct TreeNode *root1, struct TreeNode *root2)
{
    if (!root1 || !root2)
        return root1 == root2;
    if (root1->val != root2->val)
        return false;
    return isMirrored(root1->left, root2->right) && isMirrored(root2->left, root1->right);
}

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

评论