求:
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
isMirror(
struct
TreeNode* left,
struct
TreeNode* right){
if
(left==NULL && right==NULL)
return
true
;
if
(left==NULL || right==NULL)
return
false
;
return
(left->val==right->val)&&isMirror(left->left,right->right)&&isMirror(left->right,right->left);
}
bool
isSymmetric(
struct
TreeNode* root){
if
(root==NULL)
return
true
;
return
isMirror(root->left,root->right);
}
迭代:
来源:oschina
链接:https://my.oschina.net/u/4469818/blog/4282924