1.解题思路
首先先要有一个判断根据两个根节点判断两个树是否相等的接口,然后再利用递归,在需要被比较的树里进行前序遍历来得出是否有子树.
2.代码实现
bool issame(struct TreeNode* root, struct TreeNode* subRoot) { if(root==NULL&&subRoot==NULL) return true; if(root!=NULL&&subRoot==NULL) return false; if(root==NULL&&subRoot!=NULL) return false; if(root->val!=subRoot->val) return false; int x1=issame(root->left,subRoot->left); int x2=issame(root->right,subRoot->right); if(x1&&x2) return true; return false; } bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot) { if(subRoot==NULL) return false; if(root==NULL) return false; if(issame(root, subRoot)) return true; return (isSubtree(root->left, subRoot)||isSubtree(root->right, subRoot)); }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!