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

推广网站的方法有搜索引擎营销、邮件营销制作app怎么做

推广网站的方法有搜索引擎营销、邮件营销,制作app怎么做,网站建设怎么管理业务员,网站建设的前期开发算法#xff1a; 第一想法是用昨天的层序遍历#xff0c;把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以#xff0c;唯独中序遍历不方便#x… 算法 第一想法是用昨天的层序遍历把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以唯独中序遍历不方便因为中序遍历会把某些节点的左右孩子翻转了两次建议拿纸画一画就理解了 注意是指针进行交换交换的是左右孩子然后里面的值再交换 首先使用递归法代码简单 调试过程: 原因root没有迭代一直都是有值的根节点。有递归了其实不用while循环了。 正确代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def invertTree(self, root: Optional[TreeNode]) - Optional[TreeNode]:#root是每一个节点变量不一定是根节点if root None:return Noneelse:#交换左右孩子指针Vroot.left, root.right root.right, root.left#L每个子树下面的节点进一步进行左右交换if root.left:root.left self.invertTree(root.left)#R每个子树下面的节点进一步进行左右交换if root.right:root.right self.invertTree(root.right)return root 时间空间复杂度 invertTree函数的时间复杂度是O(n)其中n是二叉树中的节点数。这是因为我们对每个节点进行一次访问并且对每个节点执行固定量的工作。 invertTree函数的空间复杂度是O(h)其中h是二叉树的高度。这是因为函数使用递归递归的最大深度等于树的高度。在最坏的情况下即树完全不平衡且类似于链表的情况下树的高度等于节点数导致空间复杂度为O(n)。然而在平衡的二叉树中高度通常是log(n)导致空间复杂度为O(log(n))。 面试官看你顺畅的写出了递归一般会进一步考察能不能写出相应的迭代 我觉得迭代法就是要加循环 使用迭代的方式来翻转二叉树。我们从根节点开始将根节点入栈。然后进入循环直到栈为空。在循环中我们从栈中弹出一个节点并交换其左右子节点的指针。如果存在左子节点则将其入栈如果存在右子节点则将其入栈。 stack用于迭代地翻转二叉树。它起到了存储待处理节点的作用。 使用栈的迭代方法相比于递归方法可以减少递归调用的开销同时也可以避免递归的最大深度限制。 递归的最大深度限制是什么 递归的最大深度限制是指递归调用的层数上限。每次进行递归调用时系统会在内存中为该函数分配一段栈空间用于保存函数的局部变量、参数和返回地址等信息。当递归的层数过多时栈空间会被耗尽导致栈溢出错误。 不同的编程语言和操作系统对递归的最大深度限制可能有所不同。在Python中默认的最大递归深度是1000层超过这个限制将引发RecursionError异常。可以使用sys.setrecursionlimit()函数来修改Python的递归深度限制但是需要注意修改深度限制可能会导致栈溢出错误。 为了避免递归的最大深度限制可以使用迭代的方法来替代递归或者使用尾递归优化等技术来减少递归调用的层数。 正确代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def invertTree(self, root: Optional[TreeNode]) - Optional[TreeNode]:#root是根节点if root None:return Noneelse:stack [root]#交换左右孩子指针Vwhile stack:#将node定义为每个节点node stack.pop()#交换node.left, node.right node.right, node.left#L将node.left存入stack这样循环时pop出来进行子节点的交换if node.left:stack.append(node.left) #R每个子树下面的节点进一步进行左右交换if node.right:stack.append(node.right) return root 时间空间复杂度 时间复杂度 遍历每个节点并交换其左右子节点的指针需要O(n)的时间其中n是二叉树中的节点数。 空间复杂度 使用了一个栈来存储待处理节点最坏情况下栈的大小与二叉树的高度成正比即O(h)其中h是二叉树的高度。在最坏情况下当二叉树是一个单链表时树的高度等于节点数因此空间复杂度为O(n)。在平衡的二叉树中树的高度通常是log(n)因此空间复杂度为O(log(n))。 综上所述该解决方案的时间复杂度为O(n)空间复杂度为O(h)或O(n)。
http://www.huolong8.cn/news/365492/

相关文章:

  • 语文建设网站南京百度推广
  • 安徽省建设工程网站wordpress网站网速慢
  • 中建八局第三建设有限公司网站怎么查网站是不是百度做的
  • dreamwearver做网站公司网站优化怎么做
  • 青岛网站备案天河网站建设推广
  • o2o网站开发框架网站建设源码下载
  • cdr做图时怎么找到网站的哪些专业能建网站
  • 网站商务通弹出窗口图片更换设置百度seo点击软件
  • 可以做设计私单的网站做网站什么框架比较好
  • 上海信息公司做网站花箱 东莞网站建设
  • 青岛建设工程信息网站网站设计公司合肥
  • 宜春做网站免费网站模版下载
  • 简述创建一个网站的过程锦州网站设计
  • 网站成本费用wordpress json 时间
  • 建立网站费用大概需要多少钱软件详细设计文档
  • 网站做APP麻烦吗精密电子东莞网站建设技术支持
  • 嘉禾手机网站建设wordpress搜索不显示结果
  • 网站界面设计描述网站建设沟通
  • 门户网站开发 报价大淘客cms建站教程
  • 网站图片设置方法广州网络推广奋
  • 工业设计 做自己的网站 知乎自己怎么做网站视频赚钱吗
  • 软件开发和网站建设哪个好哪个网站可以做1040
  • 哪里有html企业网站模板下载域名备案查询网站备案信息
  • 网站推广的渠道有品牌推广的意义
  • 平面设计的网站有哪些网站新媒体运营需要哪些技能
  • 合肥网站快速排名优化部队网站建设招标
  • 网站建设需要学什么wordpress动态菜单
  • 中煤建设集团网站泰安房产价格最新
  • 邯郸网站设计申请外贸公司电话
  • 建设电影网站数据库脚本西安网站建设开发制作