题解 | #树的子结构#

树的子结构

https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88


class Solution {
public:

	bool panduan(TreeNode* p1,TreeNode* p2){
		if(p1 == NULL && p2 != NULL) return false;  //主树先空不对
		if(p1 == NULL || p2 == NULL) return true;   //主树空或不空无所谓,只要子树该节点空了,就ok
		if(p1->val != p2->val) return false;  //两个都不空 值不一样返回false
		else return panduan(p1->left,p2->left) && panduan(p1->right,p2->right);  //值一样两个都往下判断,直到p2为空为止
	}

    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
		if(pRoot1 == NULL || pRoot2 == NULL) return false; //只要有一个是空的,本次判断无需执行
		bool flag1 = panduan(pRoot1,pRoot2);  //去判断当前的两个节点
		bool flag2 = HasSubtree(pRoot1->left,pRoot2);  //如果flag1不成立,就去判断主树的左和右
		bool flag3 = HasSubtree(pRoot1->right,pRoot2);//相当于遍历了主树的每个节点,只要有一个情况的panduan是true,那结果就是true
		return flag1 || flag2 || flag3;
    }
};
//根据对称的二叉树那个题和结合本题答案来写的
//最初时候想的用递归去判断这个flag2和flag3的逻辑发现无法实现

全部评论

相关推荐

这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
你找工作的时候用AI吗?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-14 19:09
门头沟学院 Java
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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