/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: bool HasSubtree(TreeNode* A, TreeNode* B) { if(!A || !B) return false; if(isPart(A,B)) return true; return (HasSubtree(A->left,B) || HasSubtree(A->right,B)); } bool isPart(TreeNode *A1,TreeNode *B1) { if(!B1) return true; if(!A1 || A1->val != B1->val) return false; return (isPart(A1->left,B1->left) && isPart(A1->right,B1->right)); }};