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

微信分销网站建设用途校园品牌推广方案

微信分销网站建设用途,校园品牌推广方案,微营销软件免费下载,网站开发的抓包Hi~#xff01;这里是奋斗的明志#xff0c;很荣幸您能阅读我的文章#xff0c;诚请评论指点#xff0c;欢迎欢迎 ~~ #x1f331;#x1f331;个人主页#xff1a;奋斗的明志 #x1f331;#x1f331;所属专栏#xff1a;数据结构、LeetCode专栏 #x1f4da;本系… Hi~这里是奋斗的明志很荣幸您能阅读我的文章诚请评论指点欢迎欢迎 ~~ 个人主页奋斗的明志 所属专栏数据结构、LeetCode专栏 本系列文章为个人学习笔记在这里撰写成文一为巩固知识二为展示我的学习过程及理解。文笔、排版拙劣望见谅。 链表面试题 前言一、相同的树1. 题目2. 解析3. 完整代码 二、另一棵树的子树1. 题目2. 解析深度优先搜索暴力匹配3. 完整代码4.深度优先搜索序列上做串匹配 三、翻转二叉树1.题目2.解析利用深度优先搜索3.完整代码 四、总结 前言 一定要结合图像来写题递归有点绕 一、相同的树 100.相同的树 1. 题目 2. 解析 一个为空一个不为空说明不是两棵相同的树如果两个都为空说明是相同的树两个都不为空但是值不一样说明不是两棵相同的树 isSameTree 方法解释 参数方法接收两个 TreeNode 类型的参数 p 和 q分别代表两棵二叉树的根节点。 返回值返回一个布尔值表示两棵树是否相同。 逻辑 首先通过判断根节点的情况来确定树的结构是否相同 如果 p 为 null 而 q 不为 null或者 p 不为 null 而 q 为 null则树的结构不同返回 false。 如果两个根节点都为 null说明两棵树为空树返回 true。 如果根节点的值 p.val 不等于 q.val则根节点的值不同返回 false。 如果根节点的值相同则递归地比较它们的左子树和右子树判断左右子树是否相同。 递归调用 isSameTree(p.left, q.left) 递归地比较两棵树的左子树。isSameTree(p.right, q.right) 递归地比较两棵树的右子树。最终通过递归的方式判断了整棵树的结构和节点值是否完全相同。 这段代码利用递归的思想深度优先地比较了两棵二叉树的结构和节点值判断它们是否相同。 3. 完整代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/ class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {//首先判断根节点if((p null q ! null) || (p ! null q null)){//结构不一样return false;} //如果上面if语句没有走 说明 剩下两个都为空 或者 两个都不为空if(p null q null){//说明两个为空return true;}if(p.val ! q.val){return false;//说明根节点的值不一样}//以下就是根节点的值一样 判断 左右子树的值是否一样//利用递归return isSameTree(p.left,q.left) isSameTree(p.right,q.right);} }二、另一棵树的子树 写这一道题要深入理解第一道题因为要用到 527.另一棵树的子树 1. 题目 2. 解析深度优先搜索暴力匹配 从根节点开始判断如果主树为空的话则不可能包含子树 【isSubtree方法】 3. 完整代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/ class Solution {public boolean isSubtree(TreeNode root, TreeNode subRoot) {if(root null){return false;}if(isSametree(root,subRoot)){return true;}if(isSubtree(root.left,subRoot)){return true;}if(isSubtree(root.right,subRoot)){return true;}return false;}public boolean isSametree(TreeNode p,TreeNode q){if((p ! null q null) || (p null q ! null)){return false;}if(p null q null){return true;}if(p.val ! q.val){return false;}return isSametree(p.left,q.left) isSametree(p.right,q.right);} }4.深度优先搜索序列上做串匹配 class Solution {ListInteger sOrder new ArrayListInteger();ListInteger tOrder new ArrayListInteger();int maxElement, lNull, rNull;public boolean isSubtree(TreeNode s, TreeNode t) {maxElement Integer.MIN_VALUE;getMaxElement(s);getMaxElement(t);lNull maxElement 1;rNull maxElement 2;getDfsOrder(s, sOrder);getDfsOrder(t, tOrder);return kmp();}public void getMaxElement(TreeNode t) {if (t null) {return;}maxElement Math.max(maxElement, t.val);getMaxElement(t.left);getMaxElement(t.right);}public void getDfsOrder(TreeNode t, ListInteger tar) {if (t null) {return;}tar.add(t.val);if (t.left ! null) {getDfsOrder(t.left, tar);} else {tar.add(lNull);}if (t.right ! null) {getDfsOrder(t.right, tar);} else {tar.add(rNull);}}public boolean kmp() {int sLen sOrder.size(), tLen tOrder.size();int[] fail new int[tOrder.size()];Arrays.fill(fail, -1);for (int i 1, j -1; i tLen; i) {while (j ! -1 !(tOrder.get(i).equals(tOrder.get(j 1)))) {j fail[j];}if (tOrder.get(i).equals(tOrder.get(j 1))) {j;}fail[i] j;}for (int i 0, j -1; i sLen; i) {while (j ! -1 !(sOrder.get(i).equals(tOrder.get(j 1)))) {j fail[j];}if (sOrder.get(i).equals(tOrder.get(j 1))) {j;}if (j tLen - 1) {return true;}}return false;} }三、翻转二叉树 226.翻转二叉树 1.题目 2.解析利用深度优先搜索 首先要进行空树检查进行单节点树检查翻转操作首先创建一个临时节点 tmp将 root 的左右子树交换。这里直接交换了节点的引用而不是交换节点的值。递归地对 root 的左子树和右子树进行翻转操作。返回经过翻转处理后的根节点 root 3.完整代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/ class Solution {public TreeNode invertTree(TreeNode root) {//空树if(root null){return null;}//只有一个节点的树if(root.left null root.right null root.val -100 root.val 100){return root;}//定义一个中间结点TreeNode tmp new TreeNode();tmp.left root.left;tmp.right root.right;root.left tmp.right;root.right tmp.left;invertTree(root.left);invertTree(root.right);return root;} }【改进后的代码】 class Solution {public TreeNode invertTree(TreeNode root) {if (root null) {return null;}// 交换左右子树TreeNode left invertTree(root.left);TreeNode right invertTree(root.right);root.left right;root.right left;return root;} }这个简化版本避免了使用额外的临时节点并且更加清晰地表达了翻转操作 四、总结 将大问题划分成一个一个相同的小问题来求解一定要注意判断条件
http://www.hkea.cn/news/14577739/

相关文章:

  • 宜春网站制作推广普通话喜迎二十ppt
  • 别人帮做的网站怎么修改病句南城区网站建设公司
  • 如何建一个公司的网站erp系统界面
  • 六安网站开发做外贸在哪个平台比较好
  • 贵州做网站的公司有哪些建设网站怎么报价
  • 重庆教育网站建设东莞模板网站好
  • 宿迁企业做网站百度收录查询接口
  • 学校建设网站网站安全漏洞扫描工具
  • 网站dns解析不同的网站有不同的风格
  • 网站开发的方案社交网站的优点和缺点
  • 微信小网站怎么做wpdx主题wordpress
  • 怎样把网站做成软件网站建设步骤图片素材
  • 安卓4.3网站开发兼容培训网页
  • seo短视频网页入口引流网站怎么用asp.net做网站
  • 安徽省建设厅官方网站黄世山主机 可以 多少 网站
  • 有做网站设计吗如何搭建高访问量的网站
  • 注册wordpress博客西安seo公司哪家好
  • 福田企业网站优化哪个好dede网站首页
  • 山南网站制作广州做网站优化公司报价
  • 都江堰网站建设公司上海seo推广服务
  • 如何建设自己的企业网站北京效果好的网站推广
  • 正规代做毕业设计的网站做视频网站违法么
  • 腾讯云点播做视频网站智能建站推荐
  • 遵义营销型网站建设网络营销策划书模板
  • 网站建设需要哪些信息广州培训网站建设
  • 深圳网站建站建设百度推广登录平台网址
  • 众创空间文化建设网站wordpress 摘要长度
  • 天津市建设工程交易管理网站两学一做考试网站
  • 荥阳高端网站建设湖南网站建设服务
  • 广告联盟建设个人网站黄骅烈士