【leetcode】Symmetric Tree

时间:2023-03-09 01:30:32
【leetcode】Symmetric Tree

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.

对称的递归表达式:

testMirror(leftNode->left,rightNode->right)&&testMirror(leftNode->right,rightNode->left);

leftNode->left->val==rightNode->right->val

leftNode->right->val==rightNode->left->val

 class Solution {

 public:

     bool isSymmetric(TreeNode *root) {

         if(root==NULL)

         {

             return true;

         }

         return testMirror(root->left,root->right);

     }

     bool testMirror(TreeNode *leftNode,TreeNode *rightNode)

     {

         if(leftNode==NULL&&rightNode==NULL)

             return true;

         if(leftNode!=NULL&&rightNode==NULL||leftNode==NULL&&rightNode!=NULL)

             return false;

         if(leftNode->val!=rightNode->val)

             return false;

         return testMirror(leftNode->left,rightNode->right)&&testMirror(leftNode->right,rightNode->left);

     }

 };