查看: 1342| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] morris遍历的空间复杂度

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
楼主在做 145 题 二叉树后向遍历的时候,看到有一种 空间复杂度为 O(1) 的方法叫 morris 遍历。我可以理解 morris 遍历本身,如果只是访问到目标节点并 print 出来的话,是 O(1) 的空间。但是在看到网上很多题解,以及本题要求,都是要最后以一个 list 输出结果。那这样的话,由于 结果 list 占的空间,岂不是任何算法的空间复杂度最小是 O(n)? 还是说,楼主对空间复杂度这个概念的理解有偏差,还望大神们不吝赐教!感谢~

https://leetcode-cn.com/problems/binary-tree-postorder-traversal/solution/er-cha-shu-de-hou-xu-bian-li-by-leetcode-solution/

上一篇:热带雨林高频题整理-带题目和python答案-求大米
下一篇:这道coding题怎么做?
推荐
timzyt 2021-7-29 00:42:00 | 只看该作者
全局:
本帖最后由 timzyt 于 2021-7-28 09:43 编辑

lz你好,morris的空间复杂度O(1)指的是,在便利过程中不需要依靠stack(or recursive stack)或者其他数据结构来维护遍历顺序。

并且一般我们讨论遍历的空间复杂度,一般不考虑输出空间占用。

您可以这么想:很多Online Judge的输出并不是一个list 而只是让你print出遍历结果到stdout。这么算的话用Morris就是O(1)空间。但是如果用普通遍历的话,依然需要耗费O(height)的空间用作stack或者recursion stack。

评分

参与人数 2大米 +6 收起 理由
14417335 + 5
LaMian07 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| LaMian07 2021-7-29 04:43:11 | 只看该作者
全局:
timzyt 发表于 2021-7-28 12:42
lz你好,morris的空间复杂度O(1)指的是,在便利过程中不需要依靠stack(or recursive stack)或者其他数据结 ...

感谢! 那么可不可以认为,在分析leetcode题目的空间复杂度的时候,考虑的都是中间过程用到的数据结构的复杂度,而不去考虑输出(如果输出是bottleneck的话)?
回复

使用道具 举报

🔗
timzyt 2021-7-29 16:13:35 | 只看该作者
全局:
王晓枫 发表于 2021-7-28 13:43
感谢! 那么可不可以认为,在分析leetcode题目的空间复杂度的时候,考虑的都是中间过程用到的数据结构的 ...

嗯。我觉得可以这么说。
但是面试的时候还是要跟面试官声明。

评分

参与人数 1大米 +2 收起 理由
LaMian07 + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表