题目如下:
题目的目的:也就是判断对应的B树是否是A树的子树,只要是其中的B树是其中的A树的一部分即可!
解题思路:应该从根节点出发,依次判断当前A树中的子节点是否于其子树构成了对应的于B完全相同的结果。即首先先序遍历对应的A树,进行判断当前的节点和子树是否跟其中的B的结构完全相同。另外实现一个函数判断当前的B树的结果与A树的子节点的是否相同即可!
class Solution {
public:
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(!A && !B) return true;
if(A == NULL || B == NULL) return false;
return dfs(A, B) || isSubStructure(A->left, B) || isSubStructure(A->right, B);
}
bool dfs(TreeNode* A, TreeNode* B) {
if(B == NULL) return true;
if(A == NULL) return false;
return A->val == B -> val && dfs(A->left, B->left) && dfs(A->right, B->right);
}
};