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
进阶:
你可以运用递归和迭代两种方法解决这个问题吗?
题解¶
基本思路: 递归判断两个根节点是否成镜像。
代码如下:
/**
* 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);
}