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

临河做网站上百度推广的网站要多少钱

临河做网站,上百度推广的网站要多少钱,注册安全工程师官网,淘宝上的网站建设可信文章目录翻转二叉树对称二叉树二叉树的最大深度二叉树的最小深度翻转二叉树 题目链接:226. 翻转二叉树 解题逻辑: 翻转二叉树也就是将所有非叶节点的左右孩子相互交换,那么我们就可以采用层序遍历判断非叶节点进行翻转: 初始化一…

文章目录

  • 翻转二叉树
  • 对称二叉树
  • 二叉树的最大深度
  • 二叉树的最小深度

翻转二叉树

题目链接:226. 翻转二叉树

解题逻辑:

翻转二叉树也就是将所有非叶节点的左右孩子相互交换,那么我们就可以采用层序遍历判断非叶节点进行翻转:

  • 初始化一个辅助队列
  • 将根节点添加到队列中去
  • 弹出队头元素
  • 如果该元素的两个子节点均不为null则翻转两个子节点
  • 然后将子节点入队
  • 如此循环往复直到队列为空

代码如下:

class Solution {public TreeNode invertTree(TreeNode root) {Deque<TreeNode> que = new ArrayDeque<>();if(root == null) return null;que.add(root);while(!que.isEmpty()) {TreeNode item = que.remove();if(item.left == null && item.right == null) continue;TreeNode temp = item.left;item.left = item.right;item.right = temp;if(item.right != null) que.add(item.right);if(item.left != null) que.add(item.left);}return root;}
}

对称二叉树

题目链接:101. 对称二叉树

解题逻辑:

在这里插入图片描述

如果二叉树对称的话那么左右子树一定满足上图中的内相同、外相同。接下来要选择一种遍历方式,这种遍历方式要满足一个条件,能得到内相同,外相同的结果。唯一满足的方式就是后序遍历,因为后序遍历的顺序是左右中,中处在左右之后,是可以拿到左右判断的结果的。

接下来围绕递归的三要素完善一下细节:

  • 确认传入参数以及返回值:返回值是boolean,也就代表是否对称。传入参数是两个比较的节点
  • 确认递归出口:
    • 根据传入方法的两个结点的情况,可以考虑到以下三种情况
    • null 非空:返回false
    • 非空 null:返回false
    • null null:返回true
    • 非空 非空,但是值不相同:返回false
  • 确认单层的逻辑:
    • 判断是否外相同:左节点的左孩子和右节点的右孩子是否相同
    • 判断是否内相同:左节点的右孩子和右节点的左孩子是否相同
    • 只有当上面两个条件都满足才能返回true

代码如下:

class Solution {public boolean isSymmetric(TreeNode root) {return compareNode(root.left,root.right);}public boolean compareNode(TreeNode left,TreeNode right){if(left == null && right != null) return false;else if(left != null && right == null) return false;else if(left == null && right == null) return true;else if(left != null && right != null && left.val != right.val) return false;boolean result1 = compareNode(left.left,right.right);boolean result2 = compareNode(left.right,right.left);return result1 && result2;}
}

二叉树的最大深度

题目链接:104. 二叉树的最大深度

解题思路:

首先我们要了解二叉树的两个重要概念:

  • 节点深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)
  • 节点高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)

节点深度我们是从上往下统计,节点高度是从下往上统计。而二叉树的最大深度就等于二叉树的根节点高度。所以我们可以通过求根节点高度来求最大深度。而如果直接求最大深度的话涉及回溯算法,在后面会系统学习,此处先不做要求。

这一题仍然也是涉及到了递归遍历,接下来我们还是从递归三元素来分析:

  • 参数以及返回值:获得根节点高度,参数只需要传入节点即可,而返回值就是int,表示当前节点的高度,
  • 递归出口:递归到null节点,直接返回0
  • 单层逻辑:使用后序遍历,从而可以拿到两个子节点的高度,而当前节点的高度就是两者的较大值 + 1

代码如下:

class Solution {public int maxDepth(TreeNode root) {return getHeight(root);}public int getHeight(TreeNode node){if(node == null) return 0;int height1 = getHeight(node.left);int height2 = getHeight(node.right);return Math.max(height1, height2) + 1;}
}

二叉树的最小深度

题目链接:111. 二叉树的最小深度

解题思路:

这一题与上一题差不多,也是通过高度去求深度。但是如果只是将取最大值修改为取最小值是不对的,因为最小深度的定义是从根节点到最近叶子节点的最短路径上的节点数量,没有叶子节点的路径是不考虑的。所以我们还需要添加一点逻辑:

  • 当该节点的只存在左孩子节点没有右孩子节点,那么最小高度按左孩子算
  • 当该节点的只存在右孩子节点没有左孩子节点,那么最小高度按右孩子算
class Solution {public int minDepth(TreeNode root) {return getHeight(root);}public int getHeight(TreeNode node){if(node == null) return 0;int height1 = getHeight(node.left);int height2 = getHeight(node.right);if(height1 == 0 && height2 != 0) return height2 + 1;else if(height1 != 0 && height2 == 0) return height1 + 1;return Math.min(height1, height2) + 1;}
}
http://www.dtcms.com/wzjs/157546.html

相关文章:

  • 江阴 网站开发广州seo运营
  • 建设企业银行网站多少南昌seo代理商
  • 深圳做网站建设比较好的公司百度一下首页问问
  • 职友集一家做公司点评的网站百度网址大全首页链接
  • 上海公共信息服务平台百度seo推广是什么
  • iis做网站主目录选哪里如何做好推广
  • 药品网站建设女教师遭网课入侵视频大全集
  • 硬盘做免费嗳暧视频网站企业老板培训课程
  • 网站建设施工方案全国最新疫情最新消息
  • 网站布局模版网站排名优化工具
  • 西樵网站开发35个成功的市场营销策划案例
  • 对文化传播网站建设的建议郑州seo外包服务
  • wordPress主题模板站百度提交收录
  • 企业怎么建设网站首页百度seo优化是做什么的
  • 深圳营销型网站建设 龙华信科比较好的搜索引擎
  • 上海快速建站微信朋友圈的广告怎么投放
  • 有个新网站专门做外贸的叫什么微信朋友圈广告在哪里做
  • 怎么做私服发布网站网页设计模板图片
  • wordpress表格线seo技术分享免费咨询
  • 帝国cms调用网站地址淘宝怎么优化关键词排名
  • 嘉兴高端网站建设门户网站排行榜
  • wordpress 仿简书模板优化营商环境的金句
  • 中山企业网站建设方案深圳互联网公司50强
  • 国外的外贸b2b网站有哪些怎么自己建网站
  • 做海报有什么素材网站知乎seo教程视频
  • app制作定制外包服务商e零基础seo入门教学
  • 成都网站建设开发站长之家seo一点询
  • 网站建设叫什么软件百度快速排名软件原理
  • 网站开发后台技术专业搜索引擎seo合作
  • dede发布网站近三天的国内外大事