Symmetric Tree (Easy)
Description
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3 But the following is not: 1 / \ 2 2 \ \ 3 3 Note: Bonus points if you could solve it both recursively and iteratively.
|
Analysis
递归遍历左右孩子节点比较即可
My 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 26 27
|
* Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { private: bool check(TreeNode *l,TreeNode *r) { if(l==NULL || r==NULL) return l==r; if(l->val!=r->val) return false; return check(l->left,r->right) && check(l->right,r->left); } public: bool isSymmetric(TreeNode *root) { if(root==NULL) return true; return this->check(root->left,root->right); } };
|