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

免费产品网站建设米课中有个内贸网站建设

免费产品网站建设,米课中有个内贸网站建设,网站策划案怎么写范文,网站悬浮qqPython算法题集_二叉树的中序遍历 题94:1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【直接递归】2) 改进版一【函数递归】3) 改进版二【迭代遍历】 4. 最优算法 本文为Python算法题集之一的代码示例 题94: 1. 示例说…

 Python算法题集_二叉树的中序遍历

  • 题94:
  • 1. 示例说明
  • 2. 题目解析
    • - 题意分解
    • - 优化思路
    • - 测量工具
  • 3. 代码展开
    • 1) 标准求解【直接递归】
    • 2) 改进版一【函数递归】
    • 3) 改进版二【迭代遍历】
  • 4. 最优算法

本文为Python算法题集之一的代码示例

题94:

1. 示例说明

  • 给定一个二叉树的根节点 root ,返回 它的 中序 遍历

    示例 1:

    img

    输入:root = [1,null,2,3]
    输出:[1,3,2]
    

    示例 2:

    输入:root = []
    输出:[]
    

    示例 3:

    输入:root = [1]
    输出:[1]
    

    提示:

    • 树中节点数目在范围 [0, 100]
    • -100 <= Node.val <= 100

    进阶: 递归算法很简单,你可以通过迭代算法完成吗?


2. 题目解析

- 题意分解

  1. 本题为二叉树的中序遍历
  2. 基本的设计思路是采用递归,首先遍历左子树,然后访问根结点,最后遍历右子树

- 优化思路

  1. 通常优化:减少循环层次

  2. 通常优化:增加分支,减少计算集

  3. 通常优化:采用内置算法来提升计算速度

  4. 分析题目特点,分析最优解

    1. 可以考虑采用迭代法改写递归,提高性能

- 测量工具

  • 本地化测试说明:LeetCode网站测试运行时数据波动很大,因此需要本地化测试解决这个问题
  • CheckFuncPerf(本地化函数用时和内存占用测试模块)已上传到CSDN,地址:Python算法题集_检测函数用时和内存占用的模块
  • 本题本地化超时测试用例自己生成,详见【最优算法章节】

3. 代码展开

1) 标准求解【直接递归】

直接写明中序遍历次序的递归,左子树、根、右子树写在一行上

马马虎虎,超过77%在这里插入图片描述

import CheckFuncPerf as cfpclass Solution:def inorderTraversal_base(self, root):if not root:return []return self.inorderTraversal_base(root.left) + [root.val] + self.inorderTraversal_base(root.right)aSolution = Solution()
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_base, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))# 运行结果
函数 inorderTraversal_base 的运行时间为 654.17 ms;内存使用量为 8284.00 KB 执行结果 = 81

2) 改进版一【函数递归】

编写递归子函数,减少递归时缓存的资源

性能良好,超过85%在这里插入图片描述

import CheckFuncPerf as cfpclass Solution:def inorderTraversal_ext1(self, root):def inOrder(root, result):if root == None:returninOrder(root.left, result)result.append(root.val)inOrder(root.right, result)result = []inOrder(root, result)return resultaSolution = Solution()
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_ext1, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))# 运行结果
函数 inorderTraversal_ext1 的运行时间为 489.10 ms;内存使用量为 9556.00 KB 执行结果 = 81

3) 改进版二【迭代遍历】

采用堆栈来模拟递归,减少资源消耗

极速狂飙,超过98%在这里插入图片描述

import CheckFuncPerf as cfpclass Solution:def inorderTraversal_ext2(self, root):if not root:return []list_stack = []result = []while root or list_stack:if root:list_stack.append(root)root = root.leftelse:curnode = list_stack.pop()result.append(curnode.val)root = curnode.rightreturn resultaSolution = Solution()
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_ext2, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))# 运行结果
函数 inorderTraversal_ext2 的运行时间为 282.07 ms;内存使用量为 7436.00 KB 执行结果 = 81

4. 最优算法

根据本地日志分析,最优算法为第3种方式【迭代遍历】inorderTraversal_ext2

import random
ilen = 1000000
def generate_binary_tree(node_count):if node_count <= 0:return Noneroot = TreeNode(random.randint(1, 100))left = generate_binary_tree(node_count // 2)right = generate_binary_tree(node_count // 2)root.left = leftroot.right = rightreturn root
aroot = generate_binary_tree(ilen)
aSolution = Solution()
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_base, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_ext1, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))
result = cfp.getTimeMemoryStr(Solution.inorderTraversal_ext2, aSolution, aroot)
print(result['msg'], '执行结果 = {}'.format(result['result'][0]))# 算法本地速度实测比较
函数 inorderTraversal_base 的运行时间为 654.17 ms;内存使用量为 8284.00 KB 执行结果 = 81
函数 inorderTraversal_ext1 的运行时间为 489.10 ms;内存使用量为 9556.00 KB 执行结果 = 81
函数 inorderTraversal_ext2 的运行时间为 282.07 ms;内存使用量为 7436.00 KB 执行结果 = 81

一日练,一日功,一日不练十日空

may the odds be ever in your favor ~


文章转载自:

http://toC1vgr0.msbmp.cn
http://MUXJnobC.msbmp.cn
http://0WoIEjJk.msbmp.cn
http://wkMz6VME.msbmp.cn
http://k3mZAqxn.msbmp.cn
http://toTD81be.msbmp.cn
http://Lra4yt7G.msbmp.cn
http://w2IPQIFt.msbmp.cn
http://FJEMAT79.msbmp.cn
http://YIRBIb6D.msbmp.cn
http://0wE029wc.msbmp.cn
http://mBBmdqtn.msbmp.cn
http://2NiYLoVZ.msbmp.cn
http://KQFdfsjJ.msbmp.cn
http://nXKoHIA7.msbmp.cn
http://znIkKCoJ.msbmp.cn
http://MZVgshzB.msbmp.cn
http://rTCvVAfl.msbmp.cn
http://nZcLYMkR.msbmp.cn
http://0DCrcNfL.msbmp.cn
http://MnPCcX3f.msbmp.cn
http://SR1sNNsZ.msbmp.cn
http://1T0kgqPc.msbmp.cn
http://V1ZOPgx8.msbmp.cn
http://9QWWmxam.msbmp.cn
http://v0ThcfbV.msbmp.cn
http://bJrA4Iyi.msbmp.cn
http://rgaP5jXd.msbmp.cn
http://CnOFTIrn.msbmp.cn
http://Hv8BnHA1.msbmp.cn
http://www.dtcms.com/wzjs/730302.html

相关文章:

  • 西安网站建设gvps搭建asp网站
  • 建设网站公开教学视频下载wordpress什么编辑器好用吗
  • 旅游网站官网网站建设企业站模板
  • 简述建站流程网站备案报道
  • 网上书店网站建设毕业设计范文七牛云wordpress加速百度cdn
  • 二次元网站模板做影视网站对服务器要求
  • wordpress 精致主题网站建设优化服务多少钱
  • 在线制作logo模板seo优化方案
  • logo在线制作免费网站cpa网站建设教程
  • 贵州省都匀市网站建设shopex更改数据密码后网站打不开了
  • 网站的文本链接怎么做什么网站可以做直播
  • 我公司让别人做网站了怎么办c2c电子商务平台有哪些
  • 怎么跳转网站微信官网手机版
  • wordpress meta seoseo 哪些媒体网站可以发新闻
  • 淘宝客怎么建设网站首页关键词排名
  • 国内响应式网站建设腾讯云网站备案流程图
  • 重庆网站建设模板制作内蒙古创意网站开发
  • 找人做事的网站网站被入侵
  • 外贸网站大全wordpress修改文章字体颜色
  • 个人备案网站名称传奇页游排行榜前十名
  • 网站外包 博客学校网站建设技术
  • 四川住房建设厅官方网站高档网站建设
  • 网站不能粘贴怎么做在自己的网站做百度搜索框
  • 免费课程网站有哪些免费打开网站
  • 视觉上体验的网站网站建设昆山博敏
  • 乐陵网站优化项目网站开发
  • 北京网站建设方案策划万网做网站怎么样
  • 美妆网站建设环境分析柳州建设网官网
  • 做seo网站标题重要吗阿里云服务器学生免费领取
  • 菏泽 兼职做网站百度模拟点击