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

[树/链表/图] same tree那道题如果用递归做,空间复杂度是多少?

全局:

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

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

x
有的说是o(1),有的说是o(logn),到第是哪个?谢谢

public boolean isSameTree(TreeNode p, TreeNode q) {  
    if(p==null && q==null)  
        return true;  
    if(p==null || q==null)  
        return false;  
    if(p.val!=q.val)  
        return false;  
    return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);  
}


上一篇:【自我鼓励帖】1月9号脸家实习二面前的刷题日记
下一篇:【打卡贴】新年新气象 刷题加刷网课
🔗
stellari 2017-12-31 10:52:16 | 只看该作者
全局:
准确说是O(p和q两者中较浅的tree的深度)。在p和q都是平衡树的情况下,这一深度等于logN。

每次进入下一层递归时,都会在栈上新创建一对p和q,这是一个常数量级的内存消耗。所以,整个算法需要的最大空间就是(可能的最大递归深度 * 常数)。

说空间复杂度是O(1)的是没有考虑栈内存的使用情况,但个人认为这是不合理的。从理论角度而言,内存的使用量与内存的种类和分配方式无关;从实际角度而言,可用的栈空间一般情况下都很小(megabyte量级),递归深度较深时很容易导致stack overflow,这是不能不考虑的一个现实情况。

评分

参与人数 2大米 +7 收起 理由
高渐离击筑高歌 + 5 给你点个赞!
cheese_harry + 2 欢迎来一亩三分地论坛!

查看全部评分

回复

使用道具 举报

🔗
cheese_harry 2017-12-31 11:11:21 | 只看该作者
全局:
stellari 发表于 2017-12-31 10:52
准确说是O(p和q两者中较浅的tree的深度)。在p和q都是平衡树的情况下,这一深度等于logN。

每次进入下一 ...

请问时间复杂度呢?
回复

使用道具 举报

🔗
stellari 2017-12-31 18:05:59 | 只看该作者
全局:
cheese_harry 发表于 2017-12-31 11:11
请问时间复杂度呢?

设p和q都是平衡树,且节点数都是N的话,那么函数的执行时间是T(N) = 2T(N/2) + K,满足这个递推条件的复杂度是O(N)。

评分

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

查看全部评分

回复

使用道具 举报

🔗
blackie 2018-1-8 15:19:48 | 只看该作者
全局:
stellari 发表于 2017-12-31 18:05
设p和q都是平衡树,且节点数都是N的话,那么函数的执行时间是T(N) = 2T(N/2) + K,满足这个递推条件的复 ...

层主,如果是满足T(N) = A x T(N) + K, A是一个常数,比如3,4,那么整体是O(N) 的复杂度吗? 谢谢啦
回复

使用道具 举报

🔗
blackie 2018-1-8 15:20:41 | 只看该作者
全局:
blackie 发表于 2018-1-8 15:19
层主,如果是满足T(N) = A x T(N) + K, A是一个常数,比如3,4,那么整体是O(N) 的复杂度吗? 谢谢啦

写错了,应该是,T(N) = A x T(N/A) + K, A是一个常数
回复

使用道具 举报

🔗
gameboyying 2018-1-10 02:14:17 | 只看该作者
全局:
worst case o(n), n node的数量

best case o(1), 第一个不等就返回了
回复

使用道具 举报

🔗
pxu 2018-6-12 04:36:30 | 只看该作者
全局:
我觉得时间是O(n),空间是O(1). 虽然是recursion,不过是为tail recursion. frame在stack中创建后直接弹出了。欢迎交流。
回复

使用道具 举报

全局:
时间O[n] 显然, 最坏情况要检查每个node

空间应该是O[lgn], 因为你坚持也只会一次一条线的走到底, 这个高度是lgn, 是stack space.

按理来说你认为是o[1]的理由是没有new过任何地址, 这样说也不能算错.
回复

使用道具 举报

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

本版积分规则

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