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

微网站菜单网站设计的主要风格

微网站菜单,网站设计的主要风格,天津建站软件,免费无代码开发平台前言#xff1a; http://t.csdnimg.cn/WzCFU#xff08;二叉树的前#xff0c;中#xff0c;后序递归与迭代法#xff09; 在前文中我们发现迭代法实现的先中后序#xff0c;其实风格也不是那么统一#xff0c;除了先序和后序#xff0c;有关联#xff0c;中序完全就…前言 http://t.csdnimg.cn/WzCFU二叉树的前中后序递归与迭代法 在前文中我们发现迭代法实现的先中后序其实风格也不是那么统一除了先序和后序有关联中序完全就是另一个风格了一会用栈遍历一会又用指针来遍历很难写出统一的代码不像是递归法实现了其中的一种遍历方式其他两种只要稍稍改一下节点顺序就可以了。 其实针对三种遍历方式使用迭代法是可以写出统一风格的代码 接下来给出统一模板下的迭代法代码及详细注释。 可能第一遍不太好理解觉得还是之前不统一的迭代写法便于理解但只需悟透一道在草稿纸上跟着代码画一遍图就吃透统一迭代法了 代码及详细注释 迭代法前序遍历 # 定义二叉树节点的类 # class TreeNode: # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution:def preorderTraversal(self, root: Optional[TreeNode]) - List[int]:if not root:return []stack [root] # 使用栈来辅助进行遍历 把根节点root放入堆中res [] # 用于存放前序遍历的结果while stack:node stack.pop() # 弹出栈顶节点if node:if node.right:stack.append(node.right) # 先将右子节点压入栈中if node.left:stack.append(node.left) # 再将左子节点压入栈中stack.append(node) # 最后将当前节点压入栈中stack.append(None) # 压入一个空节点作为标记else:node stack.pop() # 如果弹出的是空节点说明当前节点已经遍历过了可以将其值加入结果中res.append(node.val)return res # 返回前序遍历的结果迭代法中序遍历 # 定义二叉树节点的类 # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right rightclass Solution:def inorderTraversal(self, root: Optional[TreeNode]) - List[int]:if not root: # 根节点为空 返回[]return []res [] # 用于存放中序遍历的结果stack [root] # 使用栈来辅助进行遍历 把root根节点的值加入到栈中while stack:node stack.pop() # 弹出栈顶节点if node:if node.right:stack.append(node.right) # 先将右子节点压入栈中stack.append(node) # 再将当前节点压入栈中stack.append(None) # 压入一个空节点作为标记if node.left:stack.append(node.left) # 最后将左子节点压入栈中else:node stack.pop() # 如果弹出的是空节点说明当前节点已经遍历过了可以将其值加入结果中res.append(node.val)return res # 返回中序遍历的结果迭代法后序遍历 # 定义二叉树节点的类 # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right rightclass Solution:def postorderTraversal(self, root: Optional[TreeNode]) - List[int]:if not root:return []res [] # 用于存放后序遍历的结果stack [root] # 使用栈来辅助进行遍历while stack:node stack.pop() # 弹出栈顶节点if node:stack.append(node) # 将当前节点压入栈中stack.append(None) # 压入一个空节点作为标记if node.right:stack.append(node.right) # 先将右子节点压入栈中if node.left:stack.append(node.left) # 再将左子节点压入栈中else:node stack.pop() # 如果弹出的是空节点说明当前节点已经遍历过了可以将其值加入结果中res.append(node.val)return res # 返回后序遍历的结果
http://www.yutouwan.com/news/466719/

相关文章:

  • 子网站怎么建设湛江正规网站制作方案
  • 德化住房和城乡建设网站网站建设模块一项目三
  • 一学一做看视频网站有哪些内容深圳做网站得外包公司有哪些
  • 公司域名注册后怎么建设网站凡科网站做的好不好
  • 医疗手机网站好乐买的网站推广方式
  • 用视频做网站背景小程序appld
  • 网站建设比赛方案东莞市建设规划局网站
  • 山东省建设厅职业资格注册中心网站做网站怎么这么贵
  • 开发定制网站公司南昌的网站设计
  • 柳城企业网站制作哪家好学广告设计要学什么软件
  • 四平网站建设电话中国建设银行官网站黄金部王毅
  • 网站开发代码 免责声明wordpress还是dede
  • 长沙精品网站建设公司网站建设用到的工具
  • 亿省心网站托管做网站是要云空间吗
  • 安康网站开发网站结构设计怎么写
  • 互联网网站文化上海学校网站建设
  • 整个网站的关键词工程承包合同范本免费
  • 网站建设的开发程序政务类网站建设
  • 做网站是用myecli辽宁城乡建设集团 网站
  • 上海网站建设公司价格广告设计图片素材免费
  • 营销型网站设计公司经典营销型网站
  • 邢台做网站哪个网络公司好阿里云建站可不可以备案
  • 烟台学校网站建设网站出现404
  • 做网站怎么上传市桥做网站的公司
  • 做网站如何下载别人网站图片有什么网站是专门做电商详情页
  • 做外贸网站教程图片瀑布流网站
  • 柳州 网站开发推广广告
  • 刚做的网站关键词就上来了百度公司在哪
  • 网站开发公司如何拓展业务网站制作教程谁的好
  • app 网站开发松江网站建设