letecode [101] - Symmetric Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetricLeftAndRight(TreeNode* root1,TreeNode* root2){ if(root1->left==NULL && root2->right==NULL){ if(root1->right==NULL && root2->left==NULL){ return true; }else if(root1->right!=NULL && root2->left!=NULL && root1->right->val==root2->left->val){ return isSymmetricLeftAndRight(root1->right,root2->left); }else{ return false; } }else if(root1->left!=NULL && root2->right!=NULL && root1->left->val==root2->right->val){ if(root1->right==NULL && root2->left==NULL){ return isSymmetricLeftAndRight(root1->left,root2->right); }else if(root1->right!=NULL && root2->left!=NULL && root1->right->val==root2->left->val){ return isSymmetricLeftAndRight(root1->left,root2->right)&isSymmetricLeftAndRight(root1->right,root2->left); }else{ return false; } }else{ return false; } } bool isSymmetric(TreeNode* root) { if(root==NULL) return true; if(root->left==NULL && root->right==NULL) return true; if((root->left!=NULL && root->right==NULL)||(root->left==NULL && root->right!=NULL)) return false; if(root->left->val == root->right->val){ return isSymmetricLeftAndRight(root->left,root->right); }else return false; } };运行结果: 执行用时 :16 ms 内存消耗 :14.8 MB 优质内容筛选与推荐>>