LeetCode:Symmetric Tree

来源:互联网 发布:腾讯软件管家官方版 编辑:程序博客网 时间:2024/05/24 07:16

问题描述:

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

思路:

递归版本,参考了别人的代码,觉得这个代码真是好!@

C++代码:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *  * 递归版,时间复杂度O(n),空间复杂度O(logn) */class Solution {public:  bool isSymmetric(TreeNode *root) {    return root ? isSymmetric(root -> left,root -> right):true ; }  bool isSymmetric(TreeNode *left,TreeNode * right) {      if(!left && !right)  return true;      if(!left || !right)  return false;      return left -> val == right -> val &&       isSymmetric(left -> left,right -> right) &&       isSymmetric(left -> right,right -> left);  }};


0 0