请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/
2 2
/ \ /
3 4 4 3
输出 : true
思路:迭代的思想
使用迭代思想做题最重要的是,确定迭代结束的条件。
包括迭代成功结束的条件和迭代到一半失败结束的条件!
此题中,我们从左右两子树父节点开始迭代,迭代条件有三个!
if(left == nullptr && right == nullptr)
return true;
else if(left == nullptr || right == nullptr)
return false;
else if(left->val != right->val)
return false;
class Solution {
public:
int check(TreeNode* left, TreeNode* right)
{
if(left == nullptr && right == nullptr)
return true;
else if(left == nullptr || right == nullptr)
return false;
else if(left->val != right->val)
return false;
else
return check(left->left,right->right)&&check(left->right,right->left);
}
bool isSymmetric(TreeNode* root) {
if(root == nullptr)
return true;
return(check(root->left,root->right));
}
};