题解 | #树的子结构#

树的子结构

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

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
#include <cstddef>
class Solution {
public:
	bool recursion(TreeNode* root1,TreeNode* root2){
		if(root1==NULL&&root2!=NULL){
			return false;
		}
		if(root1==NULL||root2==NULL){
			return true;
		}
		if(root1->val!=root2->val){
			return false;
		}
		return recursion(root1->left,root2->left)&&recursion(root1->right, root2->right);
	}
	//对A树的每一个节点,都同步遍历查看是否匹配B树,类似字符串匹配的暴力解法
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
		if(pRoot2==NULL||pRoot1==NULL){
			return false;
		}
		bool flag1=recursion(pRoot1, pRoot2);
		bool flag2=HasSubtree(pRoot1->left, pRoot2);
		bool flag3=HasSubtree(pRoot1->right, pRoot2);
		return flag1||flag2||flag3;
    }
};

对于树的问题用递归解法的话,只需要考虑根节点,左孩子,有孩子,然后再去思考题目对这三个节点所需要采取的措施。

全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务