做网站做app区别,抚州临川网站建设,营销咨询服务,wordpress上传权限设置力扣对应题目链接#xff1a;LCR 143. 子结构判断 - 力扣#xff08;LeetCode#xff09;
牛客对应题目链接#xff1a;树的子结构_牛客题霸_牛客网 (nowcoder.com) 核心考点#xff1a;二叉树理解#xff0c;二叉树遍历。 一、《剑指Offer》对应内容 二、分析问题 二叉…力扣对应题目链接LCR 143. 子结构判断 - 力扣LeetCode
牛客对应题目链接树的子结构_牛客题霸_牛客网 (nowcoder.com) 核心考点二叉树理解二叉树遍历。 一、《剑指Offer》对应内容 二、分析问题 二叉树都是递归定义的所以递归操作是比较常见的做法。 首先明白子结构怎么理解可以理解成子结构是原树的子树或者一部分。也就是说B 要是 A 的子结构那么 B 的根节点左子树右子树都得在 A 中存在且构成树形结构。 比较的过程要分为两步 先确定比较的起始位置。在确定从该位置开始在比较其左右子树的内容是否一致。 三、代码
//力扣AC代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool hasSubtree(TreeNode* a, TreeNode* b){if(bNULL) return true;if(aNULL) return false;if(a-val!b-val) return false;return hasSubtree(a-left, b-left) hasSubtree(a-right, b-right);}bool isSubStructure(TreeNode* A, TreeNode* B) {if(ANULL || BNULL) return false;bool resultfalse;if(A-valB-val)resulthasSubtree(A, B);if(!result)resultisSubStructure(A-left, B);if(!result)resultisSubStructure(A-right, B);return result;}
};//牛客AC代码
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:bool isSubStructure(TreeNode* a, TreeNode* b){if(bnullptr) return true;if(anullptr) return false;if(a-val!b-val) return false;return isSubStructure(a-left, b-left) isSubStructure(a-right, b-right);}bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if(pRoot1nullptr || pRoot2nullptr) return false;bool resultfalse;if(pRoot1-valpRoot2-val)resultisSubStructure(pRoot1, pRoot2);if(!result)resultHasSubtree(pRoot1-left, pRoot2);if(!result)resultHasSubtree(pRoot1-right, pRoot2);return result;}
};