dfs就好了
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool dfs(TreeNode* A, TreeNode* B, int flag) { if(B == NULL && flag == 1) return true; else if(A == NULL || B == NULL || A->val != B->val && flag == 1) return false; if(A->val == B->val) { bool f1 = dfs(A->left, B->left, 1); bool f2 = dfs(A->right, B->right, 1); if(f1 && f2) return true; } bool f1 = dfs(A->left, B, 0); bool f2 = dfs(A->right, B, 0); return f1 || f2; } bool isSubStructure(TreeNode* A, TreeNode* B) { if(B == NULL) return false; return dfs(A, B, 0); } };