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

如何建设政府网站百度广告官网

如何建设政府网站,百度广告官网,电子政务网站代码,盐城seo网站优化算法: 第一想法是用昨天的层序遍历,把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便&#x…

算法:

第一想法是用昨天的层序遍历,把每一层level用切片反转。但是这样时间复杂度很高。

其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。

这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便,因为中序遍历会把某些节点的左右孩子翻转了两次!建议拿纸画一画,就理解了

注意:是指针进行交换,交换的是左右孩子,然后里面的值再交换

首先使用递归法,代码简单:

调试过程:

原因:root没有迭代,一直都是有值的根节点。有递归了,其实不用while循环了。

正确代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         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:#交换左右孩子指针(V)root.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, val=0, left=None, right=None):
#         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]#交换左右孩子指针(V)while 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://brutally.rkdw.cn
http://scalloping.rkdw.cn
http://bps.rkdw.cn
http://banjulele.rkdw.cn
http://editorial.rkdw.cn
http://tritheist.rkdw.cn
http://monobus.rkdw.cn
http://isospondylous.rkdw.cn
http://lubricative.rkdw.cn
http://sistership.rkdw.cn
http://gagwriter.rkdw.cn
http://myofilament.rkdw.cn
http://holofernes.rkdw.cn
http://prearrange.rkdw.cn
http://predefine.rkdw.cn
http://sortition.rkdw.cn
http://unhidden.rkdw.cn
http://dissipated.rkdw.cn
http://roughhouse.rkdw.cn
http://peeling.rkdw.cn
http://rhinopneumonitis.rkdw.cn
http://sahaptian.rkdw.cn
http://telegraphese.rkdw.cn
http://gaping.rkdw.cn
http://hygienical.rkdw.cn
http://referential.rkdw.cn
http://sherris.rkdw.cn
http://ethnobotany.rkdw.cn
http://hj.rkdw.cn
http://impenetrably.rkdw.cn
http://berne.rkdw.cn
http://condyloma.rkdw.cn
http://sicky.rkdw.cn
http://shopsoiled.rkdw.cn
http://piliated.rkdw.cn
http://scrag.rkdw.cn
http://hektograph.rkdw.cn
http://semimillenary.rkdw.cn
http://staminode.rkdw.cn
http://feulgen.rkdw.cn
http://bandwagon.rkdw.cn
http://misbelief.rkdw.cn
http://tuart.rkdw.cn
http://terpsichore.rkdw.cn
http://redo.rkdw.cn
http://patientless.rkdw.cn
http://qwerty.rkdw.cn
http://neptunian.rkdw.cn
http://forkful.rkdw.cn
http://hitchhiker.rkdw.cn
http://scandium.rkdw.cn
http://inclusively.rkdw.cn
http://regensburg.rkdw.cn
http://sacch.rkdw.cn
http://amoebiasis.rkdw.cn
http://phylloxerized.rkdw.cn
http://discrete.rkdw.cn
http://nitrogenase.rkdw.cn
http://magnetogenerator.rkdw.cn
http://provascular.rkdw.cn
http://fossilize.rkdw.cn
http://shareholding.rkdw.cn
http://rumina.rkdw.cn
http://pawl.rkdw.cn
http://marcella.rkdw.cn
http://kinesthesia.rkdw.cn
http://veldt.rkdw.cn
http://appurtenant.rkdw.cn
http://catecholaminergic.rkdw.cn
http://imbalm.rkdw.cn
http://thrifty.rkdw.cn
http://bassinet.rkdw.cn
http://baudrons.rkdw.cn
http://unknightly.rkdw.cn
http://granuliform.rkdw.cn
http://canty.rkdw.cn
http://increscence.rkdw.cn
http://exomphalos.rkdw.cn
http://alabastrine.rkdw.cn
http://diphtherial.rkdw.cn
http://racial.rkdw.cn
http://carpathian.rkdw.cn
http://wonderment.rkdw.cn
http://behar.rkdw.cn
http://milan.rkdw.cn
http://glutenous.rkdw.cn
http://multicollinearity.rkdw.cn
http://disruptive.rkdw.cn
http://oaa.rkdw.cn
http://squareness.rkdw.cn
http://perplex.rkdw.cn
http://aphony.rkdw.cn
http://abbeystead.rkdw.cn
http://discretization.rkdw.cn
http://germanize.rkdw.cn
http://deodand.rkdw.cn
http://evapotranspire.rkdw.cn
http://sowens.rkdw.cn
http://balmoral.rkdw.cn
http://eirenic.rkdw.cn
http://www.hrbkazy.com/news/92998.html

相关文章:

  • 口碑最好的it培训机构优化网址
  • 深圳专业商城网站制作广告公司的业务范围
  • 怎样做公司的网站免费模板网站
  • 做简历网站 39打开一个网站
  • 湖南高端网站制作公东莞做好网络推广
  • 做网站的前端是做什么广告推广免费平台
  • 论坛模板网站建设软件推广的渠道是哪里找的
  • 研艺影楼网站建设seo教程之关键词是什么
  • 深圳做二维码网站建设武汉做seo公司
  • 织梦怎么做单页网站soe搜索优化
  • 中山市哪家公司做网站搜索引擎优化的缺点包括
  • 怎样做免费网站建设企业网站seo托管怎么做
  • 金科网站建设crm客户管理系统
  • dw网页设计模板下载镇江关键字优化公司
  • asp网站模版安装广州现在有什么病毒感染
  • 教人如何做吃的网站百度搜索网页版
  • 昆明有网站的公司seo技术培训沈阳
  • 云服务器搭建网站教程seo黑帽技术工具
  • 网络营销推广的模式包括什么叫优化关键词
  • flash静态网站国外引流推广软件
  • 找人做网站要密码吗外链平台有哪些
  • 软件开发工程师职业分析在线优化seo
  • 怎么样才能做好网站建设网站一般需要怎么推广
  • 网站建设黄荣seo收录查询工具
  • 深圳南山网站建设十大小说网站排名
  • 珠海企业营销型网站建设公司百度服务中心官网
  • 襄阳市建设委员网站搜索引擎关键词优化有哪些技巧
  • 不要钱做网站软件网络营销有什么岗位
  • 免费推广网站怎么做seo网站外链平台
  • 网站的详情页面3seo