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:1 / \ 2 2 / \ / \ 3 4 4 3
But the following
[1,2,2,null,3,null,3]
is not:1 / \ 2 2 \ \ 3 3
Approach : Use the simple recursive solution.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool checkIfSymmetric(struct TreeNode* n1, struct TreeNode* n2){ if(n1 == NULL && n2 == NULL) return true; if(n1 == NULL || n2 == NULL) return false; if(n1->val == n2->val){ return checkIfSymmetric(n1->left, n2->right) && checkIfSymmetric(n1->right, n2->left); } return false; } bool isSymmetric(struct TreeNode* root) { if(root == NULL){ return true; } return checkIfSymmetric(root->left, root->right); } |