欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

剑指Offer刷题(树的子结构)

程序员文章站 2022-06-16 18:01:06
剑指Offer刷题(树的子结构)一.题目描述二.代码(C++)三.提交记录四.备注一.题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)二.代码(C++)/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class S...

剑指Offer刷题(树的子结构)

一.题目描述

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

二.代码(C++)

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
private:
    bool mate(TreeNode* pRoot1,TreeNode* pRoot2)
    {
        if(!pRoot2)
            return true;
        if(!pRoot1 || pRoot1->val!=pRoot2->val)
            return false;
        return mate(pRoot1->left,pRoot2->left) && mate(pRoot1->right,pRoot2->right);
    }
public:
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        if(!pRoot2 || !pRoot1)
            return false;
        return mate(pRoot1,pRoot2) || HasSubtree(pRoot1->left,pRoot2) || HasSubtree(pRoot1->right,pRoot2);
    }
};

三.提交记录

剑指Offer刷题(树的子结构)

四.备注

注意题意表述不清,如果B已经迭代完,A还有子数,也判定B是A的子结构。

本文地址:https://blog.csdn.net/Umbraner/article/details/107251100