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.
分析:从根节点的左右子节点开始比较,若两个节点相同,则递归将左节点的左节点和右节点的右节点比较,左节点的右节点和右节点的左节点比较、
class Solution {
public:
bool equal(TreeNode *LNode, TreeNode *RNode)
{
if((LNode == NULL)&&(RNode == NULL))return true;
else if((LNode == NULL)||(RNode == NULL))return false;
else
{
if(LNode->val != RNode->val)return false;
return equal(LNode->left,RNode->right)&&equal(LNode->right,RNode->left);
}
}
bool isSymmetric(TreeNode *root) {
if(root == NULL)return true;
return equal(root->left, root->right);
}
};