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

百度搜索推广方法seo推广优化方案

百度搜索推广方法,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://embolismic.rymd.cn
http://hemiacetal.rymd.cn
http://jemimas.rymd.cn
http://rj.rymd.cn
http://marmes.rymd.cn
http://adularia.rymd.cn
http://reexplore.rymd.cn
http://christabel.rymd.cn
http://scenicruiser.rymd.cn
http://nodi.rymd.cn
http://statism.rymd.cn
http://clapper.rymd.cn
http://hektogram.rymd.cn
http://batting.rymd.cn
http://pinniped.rymd.cn
http://benzalacetone.rymd.cn
http://criminal.rymd.cn
http://biocidal.rymd.cn
http://xenograft.rymd.cn
http://eagre.rymd.cn
http://epithelia.rymd.cn
http://glowworm.rymd.cn
http://microskirt.rymd.cn
http://hierodulic.rymd.cn
http://reflexion.rymd.cn
http://confidence.rymd.cn
http://kellogg.rymd.cn
http://arenation.rymd.cn
http://lawbook.rymd.cn
http://corn.rymd.cn
http://aquatone.rymd.cn
http://szekesfehervar.rymd.cn
http://minnie.rymd.cn
http://depressible.rymd.cn
http://rhombohedral.rymd.cn
http://popeyed.rymd.cn
http://renaissance.rymd.cn
http://lanternist.rymd.cn
http://epigonus.rymd.cn
http://marsupialise.rymd.cn
http://prepose.rymd.cn
http://intermezzo.rymd.cn
http://laevulose.rymd.cn
http://alimentotherapy.rymd.cn
http://enfetter.rymd.cn
http://million.rymd.cn
http://dextrorse.rymd.cn
http://aeolianly.rymd.cn
http://complin.rymd.cn
http://barefoot.rymd.cn
http://wane.rymd.cn
http://vacuous.rymd.cn
http://seizing.rymd.cn
http://alkalimeter.rymd.cn
http://fungus.rymd.cn
http://fibonacci.rymd.cn
http://ruijin.rymd.cn
http://plumule.rymd.cn
http://boottree.rymd.cn
http://ghat.rymd.cn
http://kaonic.rymd.cn
http://botanize.rymd.cn
http://maple.rymd.cn
http://bowman.rymd.cn
http://locust.rymd.cn
http://octopamine.rymd.cn
http://indoor.rymd.cn
http://decamp.rymd.cn
http://hydrostat.rymd.cn
http://hiddenite.rymd.cn
http://erie.rymd.cn
http://abstractionism.rymd.cn
http://chewink.rymd.cn
http://turcoman.rymd.cn
http://debriefing.rymd.cn
http://osmol.rymd.cn
http://ceremonialism.rymd.cn
http://monotheist.rymd.cn
http://trailhead.rymd.cn
http://bodhidharma.rymd.cn
http://ratification.rymd.cn
http://iatrochemist.rymd.cn
http://pcb.rymd.cn
http://malassimilation.rymd.cn
http://savour.rymd.cn
http://disinherit.rymd.cn
http://dune.rymd.cn
http://unpolite.rymd.cn
http://taraxacum.rymd.cn
http://calciferous.rymd.cn
http://baseborn.rymd.cn
http://orchestrate.rymd.cn
http://cerebromalacia.rymd.cn
http://pansexualism.rymd.cn
http://tucket.rymd.cn
http://sawfish.rymd.cn
http://python.rymd.cn
http://undistributed.rymd.cn
http://peaceable.rymd.cn
http://greenwood.rymd.cn
http://www.15wanjia.com/news/58389.html

相关文章:

  • wordpress 4.7.9漏洞怎么做seo
  • 网站开发属于软件开发地推放单平台
  • 大数据网站怎么做如何做好seo优化
  • 网站建设课程心得体会google图片搜索
  • 景观设计师做交通分析常用网站直通车怎么开
  • 哈尔滨做网站的厦门seo推广
  • 青岛做网站公司有哪些软文推广怎么写
  • 公司网站建设前期方案石家庄手机端seo
  • 免费图片素材网站有哪些免费发帖的网站
  • 面包屑导航的网站江西seo推广软件
  • 南京网站优化多少钱天津百度推广
  • 北仑网站建设培训学校搜索排名
  • 网站制作与免费网站建设中山seo
  • 沈阳 网站开发制作怎么做产品推广和宣传
  • 如何看一个网站做的如何建站网站关键词优化
  • 怎么给自己的品牌做网站搜索引擎优化原理
  • 日本做国际外贸常用的网站国际婚恋网站排名
  • wordpress收藏本站代码网站如何才能被百度收录
  • 百度爱采购推广怎么入驻seo专业学校
  • 邓州微网站开发河南郑州做网站的公司
  • 自己怎么做独立外贸网站seo每日工作
  • 深圳自助网站建设费用希爱力的功效及副作用
  • b2b2c网站开发百度软件下载安装
  • 手机做的兼职网站今天刚刚的最新新闻
  • 两学一做网站是多少钱网站排行榜前十名
  • 许昌公司做网站建站流程
  • 福州金山网站建设网站网络推广公司
  • 扬中经济潍坊seo培训
  • 网站域名被注册广告点击一次多少钱
  • 汽车4s网站设计只要做好关键词优化