判断是否是镜像二叉树。
递归,考虑好比较两边每一种情况就好了
1.其中一边为空,另一边不为空 (false)
2.都为空(true)
3.都不为空但值不相同(false)
4.都不为空但值相同(继续判断两边的子树)
class Solution
{
public:
bool isSymmetric(TreeNode *root)
{
if (!root)
return true;
return isSymmetric(root->left, root->right);
}
bool isSymmetric(TreeNode *node_1, TreeNode *node_2)
{
if ((!node_1 && node_2) || (node_1 && !node_2))
return false;
if (!node_1 && !node_2)
return true;
if (node_1->val != node_2->val)
return false;
return isSymmetric(node_1->left, node_2->right) && isSymmetric(node_1->right, node_2->left);
}
};