当前位置: 首页 > news >正文

深圳高端网站制作公司排名网赌网站国外空间

深圳高端网站制作公司排名,网赌网站国外空间,装修设计软件app哪个好,word怎么做网页一、题目描述与要求 树的子结构_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2}&…

一、题目描述与要求

树的子结构_牛客题霸_牛客网 (nowcoder.com)

题目描述

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

假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构

数据范围:

0 <= A的节点个数 <= 10000

0 <= B的节点个数 <= 10000

示例

示例1:

输入:{8,8,7,9,2,#,#,#,#,4,7},{8,9,2}

返回值:true

示例2:

输入:{1,2,3,4,5},{2,4}

返回值:true

示例3:

输入:{1,2,3},{3,1}

返回值:false


二、解题思路

根据题目描述,我们需要判断B树是否为A树的子树。

首先题目规定了“空树不是任意一个树的子结构”,所以我们先判断B树是否为空树,是的话直接返回false;

然后如果A是空树且B不是空树的话,那么B肯定不是A的子树,也返回false;

但是如果A和B都为空或者A不为空B为空的情况下,则B就是A的子树,返回true;(这里的空,可应该解释为空节点)

若A树B树都不为空,则我们就需要对两个树进行遍历,然后比较,我们想要判断B树是否为A树的子树,那就需要从根结点开始,以每个结点为“根结点”然后跟B树进行比较。【这是因为B树不一定是从A的根结点开始的,所以在当前结点不符合的情况下,我们依次将左节点与右节点作为“根结点”与B树进行比较】

如果根结点的值相同,则去判断左子树与右子树是否相同,都相同就代表B是A的子树,只要有不同则就需要我们继续往下找,也就是换一个结点为“根结点”,然后与B树继续比较。

直至找到与B树相同的结点或者A树遍历结束。

最后对所设置的三个标志进行判断。flag1是指以根结点开始与B树比较的结果,flag2是指以左子树的结点为开始与B树比较的结果,flag3是指以右子树的结点为开始与B树比较的结果。三者只需要有一个为真就代表B树是A的子树。【每个比较都是递归的,都是以当前节点为根结点,以此去访问左子树与右子树】


三、具体代码

class Solution {
public:bool recursion(TreeNode* pRoot1,TreeNode* pRoot2){//当一个节点存在另一个不存在时if(pRoot1==nullptr&&pRoot2!=nullptr) return false;//两个都为空则返回trueif(pRoot1==nullptr||pRoot2==nullptr) return true;//比较节点值if(pRoot1->val!=pRoot2->val) return false;//递归比较子树return recursion(pRoot1->left,pRoot2->left) && recursion(pRoot1->right,pRoot2->right);}bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {//B为空树if(pRoot2==nullptr)  return false;//A为空,B不为空if(pRoot1==nullptr&&pRoot2!=nullptr) return false;//A不为空B为空 A,B都为空 if(pRoot1==nullptr||pRoot2==nullptr) return true;//把当前根结点的二叉树与B树进行递归比较bool flag1=recursion(pRoot1,pRoot2);//递归A树的每个结点 分别以每个结点为根结点进行比较bool flag2=HasSubtree(pRoot1->left,pRoot2);bool flag3=HasSubtree(pRoot1->right, pRoot2);return flag1||flag2||flag3;}
};

http://www.yayakq.cn/news/516879/

相关文章:

  • 商务网站建设的步骤网站备案可以更改吗
  • 怎么用VS2012建设网站织梦怎么修改网站logo
  • 北京网站模板建设网站开发和app开发哪个难
  • 佛山企业网站建设教程电商网站的二级菜单怎么做
  • 怎么修改公司网站图片wordpress 指定页面nofollow
  • dw做网站教程视频官网设计制作
  • 网站建设栏目这一块怎么写苏州市住建局官网
  • 不利用网站怎么做调查问卷用户体验设计经典案例
  • 网站建设需求分析报告撰写wordpress前端开发
  • 天津网站建设价格做商铺的网站有那些
  • 淮安市住房和城乡建设局网站首页阿里云大使wordpress
  • 手机网站建设 苏州海尔电子商务网站建设
  • 南宁建站服务新增备案 网站名字
  • 网站做动态虚线建设银行 访问的网站出错
  • 房地产型网站建设手机网站建设平台合同
  • jsp网站开发详解网站建设的发展前景
  • 网站维护基本概念认知WordPress主题分页代码
  • 网站正在备案中模板天津建设工程信息网的信用分
  • 网页制作与网站开发wordpress 单栏 主题
  • wordpress给公司建站宜昌做网站要什么条件
  • 手机做网站的教程网站建设销售
  • 陕西陕煤建设集团有限公司网站想做无货源电商怎么入手
  • 广州网站建设规划长沙网站快速优化排名
  • 建站之星和凡科建站哪个系统好中国建设银行遵义市分行网站
  • 网站推广怎么做的wordpress图片去水印
  • seo蒙牛伊利企业网站专业性诊断新手如何给自己的网站做优化
  • 创建网站的基本流程微营销方案
  • 网站域名续费多少钱高明网站设计平台
  • 金昌北京网站建设哪些网站可以做店淘客
  • wordpress视频网站模板下载建设银行信用卡中心网站