/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: bool check_preOrder(TreeNode* root1, TreeNode* root2){ if (!root2) return true; else if (!root1 || root1->val != root2->val) return false; else return check_preOrder(root1->left, root2->left) && check_preOrder(root1->right, root2->right); } bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { if (!pRoot1 || !pRoot2) return false; else return check_preOrder(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2); } };
前序递归