题目如下:
可以使用第100题中判断相同的树的代码稍作改动即可(一个左向优先一个右向优先)
直接放代码了,很简单的
void InOrderTraverse(TreeNode*node1,TreeNode*node2,int &flag)
{
if(node1==nullptr&&node2==nullptr)return;
if(node1!=nullptr&&node2!=nullptr)
{
if(node1->val!=node2->val)
{
flag++;
return;
}
}
else
{
flag++;
return;
}
if(flag)return;
InOrderTraverse(node1->left,node2->right,flag);
InOrderTraverse(node1->right,node2->left,flag);
}
class Solution {
public:
bool isSymmetric(TreeNode* root) {
int flag=0;
InOrderTraverse(root,root,flag);
return !flag;
}
};
这空间复杂度还是很低的