Saturday, September 20, 2014

LeetCode: Symmetric Tree

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
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.
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

 /**  
  * Definition for binary tree  
  * struct TreeNode {  
  *   int val;  
  *   TreeNode *left;  
  *   TreeNode *right;  
  *   TreeNode(int x) : val(x), left(NULL), right(NULL) {}  
  * };  
  */ 
 
   bool isMirror(TreeNode *root1, TreeNode *root2)  
   {  
     if(!root1 && !root2)return true;  
     if(!root1 || !root2)return false;  
     return (root1->val==root2->val && isMirror(root1->left, root2->right) && isMirror(root1->right, root2->left));  
   }  

   bool isSymmetric(TreeNode *root) {  
     if(!root)return true;  
     if(!root->left && !root->right)return true;  
     return isMirror(root->left, root->right);  
   }  

No comments:

Post a Comment