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

wordpress 一键转微信seoul什么意思

wordpress 一键转微信,seoul什么意思,网站开发 微信 支付,网站侧边栏菜单题目 来源:JZ26 树的子结构 描述 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下&#xff…

题目

来源:JZ26 树的子结构
描述
输入两棵二叉树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

解析

官方题解讲得一塌糊涂,关键概念没解释就算了,代码逻辑还非常混乱。这题的难度应该算较难而不是中等,因为有个关键点很难想到。假设两棵树分别为A,B,B为子树,则B为A的子树有如下三种情况:
1.B和A的根节点相同,B为A的子树。
2.B和A的根节点不同,B为A的左子树的子树。
3.B和A的根节点不同,B为A的右子树的子树。
显然,这三种情况都需要递归,但因为第一种情况和后两种是有本质区别的,所以第一种情况就需要单独写一个函数来判断,假设为IsSubtree。由于题目规定空树不是任意树的子树,所以HasSubtree开头就要排除B为空的情况,则这会引入一个关键点:IsSubtree中传入的B树的节点如果为空,则当前的IsSubtree的递归层数至少是两层,该B树节点不可能在第一层,而且前几层一定都是匹配成功的,所以一定要返回true。 下面举例说明:
在这里插入图片描述

显然,当递归层中的B树节点为空时,前几层的节点是匹配成功的,所以要返回true。图中总共要处理两次B树节点为空的情况,两次都要返回true,B树才能正确匹配A树。这点确实是比较难的,这点想不到,这题就不可能做对。
关键点解决了,IsSubtree的算法就不难写了:
1.判断B树节点是否空,若空则返回true。
2.判断A树节点是否为空,若空则返回false。
3.此时A树节点和B树节点都不空,判断它们的值是否相等,若不相等则返回false。
4.此时A树节点和B树节点都不空且相等,则递归判断它们的左右子树是否也都相等。
IsSubtree的实现如下:

bool IsSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if (!pRoot2 ) return true;if (!pRoot1 || pRoot1->val != pRoot2->val)return false;return IsSubtree(pRoot1->left, pRoot2->left) &&IsSubtree(pRoot1->right, pRoot2->right);
}

这个函数是本题的核心,写对了,后面就很简单了:假设主函数为HasSubtree,则算法如下:
1.判断B树或A树的节点是否空,空则返回false(题目规定空树不是任意树的子树)。
2.调用IsSubtree,判断B和A的根节点是否相同且B是否为A的子树,如果是则返回true。
3.此时B和A的根节点不同,递归判断B是否为A的左(右)子树的子树。
完整代码如下:

bool IsSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if (!pRoot2 ) return true;if (!pRoot1 || pRoot1->val != pRoot2->val)return false;return IsSubtree(pRoot1->left, pRoot2->left) &&IsSubtree(pRoot1->right, pRoot2->right);
}
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {if (!pRoot1 || !pRoot2)return false;return IsSubtree(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2)|| HasSubtree(pRoot1->right, pRoot2)  ;
}
http://www.15wanjia.com/news/17638.html

相关文章:

  • 重庆网站制作济南南宁网站seo
  • 做西式快餐店网站百度seo推广工具
  • wordpress主题 手机端排名优化公司电话
  • 皮具网站建设服装网站苏州手机关键词优化
  • 淘宝网站建设类直通车互联网推广公司排名
  • 网站维护包括如何建立公司网站网页
  • 北京b2b网站开发信息发布推广方法
  • 宣传链接用什么软件百度爱采购优化软件
  • 杭州微信网站制作沙坪坝区优化关键词软件
  • 洛阳专注网站建设的公司如何创建一个网页
  • 交友app网站建设太原seo自媒体
  • 凡科免费网站可以做推广吗外包公司排名
  • 网站视频超链接怎么做互联网营销方式有哪些
  • 社交app开发深圳专业seo外包
  • 从域名角度看网站建设注意事项最火的网络推广平台
  • 济南本地网站建设seo包括哪些方面
  • 重庆做网站公司搜索词
  • 自己做网站上市韩国今日特大新闻
  • 哪些网站的做的好看的线上推广平台有哪些
  • 美工做网站怎么收费seo推广优化培训
  • 做网站商城怎么样东莞百度seo排名
  • 网站开发的好处和弊端东莞今天新增加的情况
  • 局域网网站怎么做计算机培训课程
  • 凡科做的网站被举报了会怎么样福州短视频seo服务
  • 昌吉 建设局 网站seo指导
  • 微企点自助建站系统免费文案素材网站
  • 网站改版的方式现在百度推广有用吗
  • app网站有哪些整站优化的公司
  • 公司的网站建设jnzji宁波网站优化公司推荐
  • 东莞网站建设效果好社交网络推广方法