原题题目
代码实现(首刷自解)
bool issame ( struct TreeNode * root1, struct TreeNode * root2)
{
if ( ! root1 && ! root2)
return true;
if ( root1 && root2)
{
if ( root1-> val == root2-> val)
return issame ( root1-> right, root2-> left) && issame ( root1-> left, root2-> right) ;
else
return false;
}
else
return false;
}
bool isSymmetric ( struct TreeNode * root) {
if ( ! root)
return true;
if ( issame ( root-> left, root-> right) )
return true;
else
return false;
}
代码实现(二刷DAY 84自解)
class Solution {
public :
bool visit ( TreeNode* root1, TreeNode* root2)
{
if ( ! root1 && ! root2) return true ;
if ( ! root1 || ! root2) return false ;
return root1-> val == root2-> val && visit ( root1-> left, root2-> right) && visit ( root1-> right, root2-> left) ;
}
bool isSymmetric ( TreeNode* root) {
return visit ( root-> left, root-> right) ;
}
} ;
代码实现(三刷DAY 138自解)
class Solution {
public :
bool visit ( TreeNode* left, TreeNode* right)
{
if ( left == nullptr || right == nullptr )
{
if ( left == right) return true ;
else return false ;
}
return ( left-> val == right-> val) && visit ( left-> left, right-> right) && visit ( left-> right, right-> left) ;
}
bool isSymmetric ( TreeNode* root) {
return visit ( root-> left, root-> right) ;
}
} ;
代码实现(四刷自解 DAY 285 C++)
class Solution {
public :
bool Helper ( TreeNode* left, TreeNode* right) {
if ( ! left && ! right) return true ;
if ( ! left || ! right) {
return false ;
}
return left-> val == right-> val && Helper ( left-> left, right-> right) &&
Helper ( left-> right, right-> left) ;
}
bool isSymmetric ( TreeNode* root) {
if ( ! root) return true ;
return Helper ( root-> left, root-> right) ;
}
} ;
代码实现(五刷自解 DAY 7 Golang)
func Helper ( left, right * TreeNode) bool {
if left == nil && right == nil {
return true
}
if left == nil || right == nil {
return false
}
return left. Val == right. Val && Helper ( left. Right, right. Left) && Helper ( left. Left, right. Right)
}
func isSymmetric ( root * TreeNode) bool {
return Helper ( root. Left, root. Right)
}