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

深圳门户网站建设特点新产品推广方式有哪些

深圳门户网站建设特点,新产品推广方式有哪些,ecshop网站需要禁止蜘蛛抓取图片吗,汕头seo网站优化摘要 剑指 Offer 55 - I. 二叉树的深度 一、深度优先搜索 如果我们知道了左子树和右子树的最大深度l和r,那么该二叉树的最大深度即为:max(l,r)1。 而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计…

摘要

剑指 Offer 55 - I. 二叉树的深度

一、深度优先搜索

如果我们知道了左子树和右子树的最大深度l和r,那么该二叉树的最大深度即为:max(l,r)+1。

而左子树和右子树的最大深度又可以以同样的方式进行计算。因此我们可以用「深度优先搜索」的方法来计算二叉树的最大深度。具体而言,在计算当前二叉树的最大深度时,可以先递归计算出其左子树和右子树的最大深度,然后在 O(1)O(1) 时间内计算出当前二叉树的最大深度。递归在访问到空节点时退出。

class Solution {public int maxDepth(TreeNode root) {if (root == null) {return 0;} else {int leftHeight = maxDepth(root.left);int rightHeight = maxDepth(root.right);return Math.max(leftHeight, rightHeight) + 1;}}
}

复杂度分析

  • 时间复杂度:O(n)O(n),其中 nn 为二叉树节点的个数。每个节点在递归中只被遍历一次。
  • 空间复杂度:O(height)O(height),其中 heightheight 表示二叉树的高度。递归函数需要栈空间,而栈空间取决于递归的深度,因此空间复杂度等价于二叉树的高度。

二、广度优先搜索

我们也可以用广度优先搜索的方法来解决这道题目,但我们需要对其进行一些修改,此时我们广度优先搜索的队列里存放的是当前层的所有节点。每次拓展下一层的时候,不同于广度优先搜索的每次只从队列里拿出一个节点,我们需要将队列里的所有节点都拿出来进行拓展,这样能保证每次拓展完的时候队列里存放的是当前层的所有节点,即我们是一层一层地进行拓展,最后我们用一个变量 ans来维护拓展的次数,该二叉树的最大深度即为 ans。

    public int maxDepth2(TreeNode root) {if (root == null) {return 0;}Queue<TreeNode> queue = new LinkedList<TreeNode>();// 加入root节点queue.offer(root);int ans = 0;while (!queue.isEmpty()) {int size = queue.size();while (size > 0) {TreeNode node = queue.poll();if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}size--;}// 将每一层的队列的值都弹出即为深度数ans++;}return ans;}

复杂度分析

  • 时间复杂度:O(n),其中n为二叉树的节点个数。与方法一同样的分析,每个节点只会被访问一次。
  • 空间复杂度:此方法空间的消耗取决于队列存储的元素数量,其在最坏情况下会达到O(n)。

三、平衡二叉树

判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

有了计算节点高度的函数,即可判断二叉树是否平衡。具体做法类似于二叉树的前序遍历,即对于当前遍历到的节点,首先计算左右子树的高度,如果左右子树的高度差是否不超过1,再分别递归地遍历左右子节点,并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。

package Tree;/*** @Classname JZ55平衡二叉树* @Description TODO* @Date 2023/2/23 16:51* @Created by xjl*/
public class JZ55平衡二叉树 {public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}public boolean isBalanced(TreeNode root) {if (root == null) {return true;} else {// 要求这个左子树的和右子树都要小于这个,同时要求这个树本身的高度差不能超过1return Math.abs(height(root.left) - height(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);}}public int height(TreeNode root) {if (root == null) {return 0;} else {// 返回的是这个树的高度return Math.max(height(root.left), height(root.right)) + 1;}}
}

复杂度分析

  • 时间复杂度:O(n^2),其中n是二叉树中的节点个数。最坏情况下,二叉树是满二叉树,需要遍历二叉树中的所有节点,时间复杂度是 O(n)。对于节点p,如果它的高度是d,则height(p)最多会被调用d次(即遍历到它的每一个祖先节点时)。对于平均的情况,一棵树的高度h 满足O(h)=O(log⁡n),因为 d≤h,所以总时间复杂度为 O(nlog⁡n)。对于最坏的情况,二叉树形成链式结构,高度为 O(n),此时总时间复杂度为 O(n^2)
  • 空间复杂度:O(n),其中 n是二叉树中的节点个数。空间复杂度主要取决于递归调用的层数,递归调用的层数不会超过n。

博文参考

《leetcode》

http://www.tj-hxxt.cn/news/72163.html

相关文章:

  • 网站图片展示方式有哪些搜索引擎优化需要多少钱
  • 做论坛网站前段用什么框架好点成都网站快速排名软件
  • 创什么网站吸引人谷歌seo是做什么的
  • web网站开发技术考试题型富阳网站seo价格
  • 爱站权重津seo快速排名
  • 惠州网站关键字优化网络营销项目
  • web网站开发毕业设计任务书重庆百度seo代理
  • 惠州淡水网站建设公司网店代运营收费
  • 建筑施工合同范本2021seo怎么去优化
  • 品牌标志seo专员很难吗
  • wordpress-5.0升级未被安装湖南企业竞价优化公司
  • 谷歌做网站百度搜索引擎怎么弄
  • 深圳龙岗个人网站建设网络推广网络营销和网站推广的区别
  • 建设一个网站需要多久多少钱此网站三天换一次域名
  • 资源下载网站wordpress服务营销案例100例
  • 插入视频网站seo代码优化包括哪些
  • 在线教育网站策划方案石家庄新闻网
  • skype在网站上怎么做链接优化网站首页
  • 广州西樵网站制作微信软文推广怎么做
  • 企业网站建设 优化推广优化工具
  • 最专业微网站多少钱四川旅游seo整站优化站优化
  • 毕业设计网站建设软件项目百度一下百度下载
  • 现在去石家庄会被隔离吗防城港网站seo
  • 网站站群东莞seo公司
  • 破仑网络营销公司池州网站seo
  • 中学生做的网站有哪些方面世界网站排名查询
  • 没有网站域名备案信息西安百度关键词推广
  • 网站关键词词库seo顾问张智伟
  • 越秀定制型网站建设南通网站快速收录
  • 企业做企业网站的好处seo外包公司兴田德润官方地址