Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
But the following [1,2,2,null,3,null,3]
is not:
Note:
Bonus points if you could solve it both recursively and iteratively.
题解:递归比较二者的子树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool ju(struct TreeNode* a,struct TreeNode* b){ if(a->val == b->val) { if((a->left==NULL&&b->right==NULL)||(a->left!=NULL&&b->right!=NULL&&ju(a->left,b->right))) { if((b->left==NULL&&a->right==NULL)||(b->left!=NULL&&a->right!=NULL&&ju(b->left,a->right))) return true; else return false; } else return false; } return false; } bool isSymmetric(struct TreeNode* root) { if(root==NULL) return true; if((root->left==NULL&&root->right==NULL)||(root->left!=NULL&&root->right!=NULL&&ju(root->left,root->right))) return true; else return false; }