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

有没有免费的微网站龙岗中心医院

有没有免费的微网站,龙岗中心医院,开发网站的流程,猪价大涨已成定局摘要 剑指 Offer 55 - I. 二叉树的深度 一、深度优先搜索 如果我们知道了左子树和右子树的最大深度l和r#xff0c;那么该二叉树的最大深度即为#xff1a;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;}QueueTreeNode queue new LinkedListTreeNode();// 加入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.w-s-a.com/news/99030/

相关文章:

  • 《网页设计与网站建设》A卷答案广东新闻联播
  • 海南专业网站运营托管wordpress 去掉主题
  • 企业品牌网站制作甜品制作网站
  • 手机网站怎么制作影响力网站建设
  • 猪八戒网站做私活赚钱吗一尊网 又一个wordpress站点
  • 上海市做网站的公司滨州哪里做网站
  • 简单的网站建设步骤wordpress 贴吧主题
  • 金泉网做网站找谁表格做网站
  • 北京做兼职从哪个网站好江西省建设监督网站电子网
  • 什么网站做生鲜比较好安徽建设厅城乡官网
  • 域名购买网站有哪些问题上海装修网站建设
  • 找人做seo要给网站程序河北建设网网站
  • 哪家做网站性价比高wordpress最新文章链接插件
  • 维修网站怎么做移动互联网应用程序指的是什么
  • 张家界建设网站门户网站的建设原理
  • 企业通用网站模板湖南网站建设企业
  • 能看网站的视频app如何运行asp网站
  • 公司做网站还是做阿里好呢国外的旅游网站做的如何
  • 怎么做wep网站长沙seo排名公司
  • 海南网站网络推广做转运网站
  • 门户网站方案用户等待网站速度
  • 哈尔滨专业建网站方案深圳生活免费信息网
  • 检测网站是否被挂黑链wordpress 网址分享
  • 网站建设贵阳东莞网站建设策划
  • 网站5建设需要学什么桃城网站建设公司
  • 杭州外贸网站企业门户网站的安全性
  • 建设论坛网站需要做什么水果电商网站建设相关文献
  • 群晖 nas 做网站建设网站的报价
  • 白山做网站网站建设 app 优化
  • 畜牧业网站建设官方网站下载拼多多app