剑指offer:树的子结构

class Solution{
public:
    bool HasSubtreeCore(TreeNode* pRoot1, TreeNode* pRoot2) {
    
        if (pRoot2 == nullptr) return true;
		if (pRoot1 == nullptr) return false;

        if(pRoot1 -> val == pRoot2 -> val) {
            return HasSubtreeCore(pRoot1->left, pRoot2->left) &&
                   HasSubtreeCore(pRoot1->right, pRoot2->right);
        
		}
		else {
			return false;
		}
	}
    bool HasSubtree(TreeNode* pRoot1,TreeNode* pRoot2){
     	if(pRoot1==nullptr || pRoot2==nullptr) return false;

     	return HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2)||HasSubtreeCore(pRoot1,pRoot2);

}
        

};

首先判断子数为空吗,为空为true,判断主数为空吗,为空为false;当满足主数和子树的指针指向的值一致时,再分别判断数的左右叶子节点一样不,另一个主函数中,如果两个指针有一个为空,则为false。返回(有可能是主数当前结点的的左子树和子树的当前节点一样;也有可能是主数当前结点的的右子树和子树的当前节点一样;还有一种可能是两个指针指向的节点正好相等(去到第一次定义的那个函数HasSubtreeCor里去,然后再判断其左右子树相不相等))

#剑指offer#
全部评论

相关推荐

昨天 15:30
门头沟学院 运营
点赞 评论 收藏
分享
08-19 17:40
Java
吴offer选手:666 打老板了吗
点赞 评论 收藏
分享
阿武同学:不要写至今,写具体哪年哪月毕业,专业技能往后排,项目往前排,共青团员可以不写
投了多少份简历才上岸
点赞 评论 收藏
分享
09-10 21:07
已编辑
南京理工大学 C++
第一题bfs,20min搞定第二题,掩码,二进制操作通过24%(把j打成i)调了一个半小时第三题,没时间看了(直接cout第一个用例过10%)
来个白菜也好啊qaq:牛啊,第三题打印第一个用例居然可以拿百分之10不过第二题瞎寄吧写可以拿百分之36的分(两个字符串的string(0,12)比较,一样给yes,不一样给no)
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务