【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

 

 1 class Solution {

 2 

 3 public:

 4 

 5     bool isSymmetric(TreeNode *root) {

 6 

 7         if(root==NULL)

 8 

 9         {

10 

11             return true;

12 

13         }

14 

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

16 

17        

18 

19     }

20 

21    

22 

23     bool testMirror(TreeNode *leftNode,TreeNode *rightNode)

24 

25     {

26 

27        

28 

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

30 

31             return true;

32 

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

34 

35             return false;

36 

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

38 

39             return false;

40 

41            

42 

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

44 

45        

46 

47        

48 

49     }

50 

51 };

 

 

 

 

 

你可能感兴趣的:(LeetCode)