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

教育网站前置审批系统仁寿县建设局网站

教育网站前置审批系统,仁寿县建设局网站,亚马逊 wordpress,做词云的网站大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 相同的树二. 对称二叉树三. 另一棵树的子树 一. 相同的树 点击查看题目 思路: bool isSameTree(…

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
在这里插入图片描述


目录

  • 一. 相同的树
  • 二. 对称二叉树
  • 三. 另一棵树的子树

一. 相同的树

点击查看题目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

思路:

在这里插入图片描述

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都为空if(p==NULL&&q==NULL)return true;//一个为空if(p==NULL||q==NULL)return false;//值不相同if(p->val!=q->val)return false;//值相同,比较左右子树return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}

二. 对称二叉树

点击查看题目

在这里插入图片描述
在这里插入图片描述

思路:

在这里插入图片描述

这道题同相同的树相似,只不过相同的树是比较2个树的同侧子树,而这道题是比较不同侧子树

bool _isSymmetric(struct TreeNode* p,struct TreeNode* q){//p q都为空if(p==NULL&&q==NULL)return true;//p和q有一个为空if(p==NULL||q==NULL)return false;//p和q的值不同if(p->val!=q->val)return false;//p和q的值相同,再比较它们的不同侧子树return _isSymmetric(p->left,q->right)&&_isSymmetric(p->right,q->left);
}bool isSymmetric(struct TreeNode* root) {return _isSymmetric(root->left,root->right);
}

三. 另一棵树的子树

点击查看题目

在这里插入图片描述
在这里插入图片描述

思路:

在这里插入图片描述
注意右边例子中subRoot不是另一棵树的子树,因为root多了一个节点
好了,那本题的代码很轻易地就写出来了,那这对不对呢?

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都为空if(p==NULL&&q==NULL)return true;//一个为空if(p==NULL||q==NULL)return false;//值不相同if(p->val!=q->val)return false;//值相同,比较左右子树return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if(root==NULL)return false;if(root->val==subRoot->val)return isSameTree(root,subRoot);return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

在这里插入图片描述
很遗憾,这是错的。为什么呢?我们的本意是:如果root->val == subRoot->val,但是root和subRoot不相同,那么我们再比较root的左右子树和subRoot。基于这个想法,我们再仔细看代码,发现当root->val==subRoot->val时,返回的是isSameTree(root,subRoot)的值,那么如果返回false,我们会直接跳过root的子树而返回root的双亲结点(以下图的两个树为例)

在这里插入图片描述
在这里插入图片描述

所以我们在root->val==subRoot->val时不能返回isSameTree(root,subRoot)的值,而是当它的值为true时返回true,否则再比较左右子树。代码如下:

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都为空if(p==NULL&&q==NULL)return true;//一个为空if(p==NULL||q==NULL)return false;//值不相同if(p->val!=q->val)return false;//值相同,比较左右子树return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if(root==NULL)return false;if(root->val==subRoot->val){if(isSameTree(root,subRoot))return true;}return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

也有一种简写的方法,思路一样

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都为空if(p==NULL&&q==NULL)return true;//一个为空if(p==NULL||q==NULL)return false;//值不相同if(p->val!=q->val)return false;//值相同,比较左右子树return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if(root==NULL)return false;return isSameTree(root,subRoot)||isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

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

相关文章:

  • 烟台做网站优化西安定制网站建设公司哪家好
  • 网站模板免费下载phpwordpress页面找不到404
  • 阿里巴巴官网网站南昌微信网站开发公司
  • 午夜资源站今天的新闻直播
  • wap网站发布在喵窝网站怎么做图
  • 惠普电脑网站建设策划方案深圳创业补贴申请条件
  • ps设计素材网站滨州seo排名
  • 北京品牌建设网站标书制作技巧
  • 自动成交型网站win2003服务器网站管理工具
  • 付费网站源码最好的赣州网站建设
  • 工程建设有限公司经营范围郑州seo顾问
  • 郴州网站推广网站页面设计尺寸
  • 网站搜索防止攻击做网站的流程 优帮云
  • 网站设计 ipadid97网站怎么做的
  • 南通网络公司网站制作网页用什么进行页面布局
  • 铁岭网站建设公司品牌营销策划推广
  • 外贸网站如何做推广苏州天元建设集团有限公司是国企还是央企
  • 如何做自己的播报网站建设银行假网站
  • 江苏省江建集团有限公司建设网站wordpress ie
  • 吉安做网站的公司风险的网站怎么出现
  • 企业网站建设需求调查外贸推广平台
  • 福田欧曼服务站电话临漳网站建站
  • 怎么网站代备案网站监控的软件怎么做
  • 手机网站适配代码郑州免费网站制作
  • 一个服务器可以备案几个网站DW网站建设出现哪些问题
  • 网站建设服务公司选哪家比较好?wordpress中文docker
  • 家装网站建设哪家好点用asp.net做后台网站
  • 郑州网站建设 易云互联福田区罗湖区盐田区
  • 网站集约化建设会议议程阿狸网站建设
  • 网站建设哈尔滨app开发2不付费免费网站