class Solution {
public:
bool isSubtree(TreeNode* root, TreeNode* subRoot) {
queue<TreeNode*>que;
if(root!=NULL)que.push(root);
while(!que.empty()){
TreeNode *node=que.front();
que.pop();
if(compare(node,subRoot))return true;
if(node->left)que.push(node->left);
if(node->right)que.push(node->right);
}
return false;
}
bool compare(TreeNode *left,TreeNode *right){
if(left!=NULL&&right==NULL)return false;
else if(left==NULL&&right!=NULL)return false;
else if(left==NULL&&right==NULL)return true;
else if(left->val!=right->val)return false;
else{
bool out=compare(left->left,right->left);
bool in=compare(left->right,right->right);
return out&∈
}
}
};
对称二叉树+层序遍历
对称二叉树总结:一直相等循环下去直到为空或者不相等